2017-02-15 18 views
0

Я написал SQL-запрос, который должен запускаться на сервере. Для вызова этого запроса я использую VBScript, который хранится на сервере. Когда я запускаю этот скрипт с сервера, сценарий работает нормально. Но, когда я запускаю VBScript с моего локального компьютера, я получаю сообщение об ошибке доступа к вызову SQL-скрипта. Кажется, я не понимаю. Является VBScript Я использую следующие:Как получить VBScript для запуска на компьютере, где он хранится? Или, что я делаю неправильно здесь?

dim dbconn, connect, ObjFSO 
connect = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=DBName;Server=ServerName;Database=DBName;ID=USERID;Password=PASSWORD" 
Set ObjFSO = CreateObject("Scripting.FileSystemObject") 
Set dbconn = CreateObject("ADODB.Connection") 
dbconn.Open connect 
dbconn.execute ObjFSO.OpenTextFile("\\ServerName\FolderPath\FileName.sql").ReadAll,128 
Set dbconn = Nothing 

ошибки я получаю:

ss

Примечание: Я не получаю сообщение об ошибке видно на изображении выше, когда я бегу тот же VBScript с сервера.

Есть ли способ заставить эту программу работать только с сервера, на котором она хранится?

Я просто пропустил что-то действительно простое?

+1

Поскольку вы используете интегрированную защиту, вам необходимо убедиться, что ваша учетная запись пользователя AD в вашем локальном поле имеет разрешения на вход в систему и выполнение SQL-скрипта. –

+0

@ digital.aaron, если эта учетная запись может запускать сценарий из удаленного подключения к рабочему столу, означало бы, что у них есть необходимые разрешения? Когда вы говорите «учетная запись пользователя AD», вы имеете в виду идентификатор пользователя и пароль, указанные в vbscript? –

+0

«Пользователь AD» в этом контексте означает «Active Directory user». Обычно это считается вашим именем пользователя и паролем Windows. В любом случае, @ Kerry-Cakebread опубликовал хороший ответ. –

ответ

2

Возможно, вы заходите на сервер с одним набором учетных данных Windows и заходите на свой рабочий стол под другим именем пользователя, у которого нет доступа SQL?

В любом случае, поскольку используемая строка соединения указывает на безопасность SSPI, она попытается использовать ваши учетные данные Windows для аутентификации и полностью игнорировать имя пользователя и пароль, указанные в строке подключения.

попробовать что-то вроде этого вместо (см www.connectionstrings.com):

Provider=sqloledb;Data Source=myServerAddress;Initial Catalog=myDataBase; 
User Id=myUsername;Password=myPassword; 
+0

Вы были правы, возникла проблема с логином, который я использовал, Дело не в том, что логин не имеет правильных учетных данных. Дело в том, что логин конфликтует с активной учетной записью и что он использует вход в Windows. Таким образом, чтобы исправить проблему, все, что мне нужно было сделать, это сделать фиктивный логин, который использовал фактические учетные данные для входа в систему и предоставить ему правильные разрешения. Теперь это работает как шарм! –

+0

Кроме того, СПАСИБО СМОТРЕТЬ! –

0

Проблема была с идентификатором пользователя я пытающегося использовать. Я сделал новый идентификатор пользователя, который не использует проверку подлинности Windows для доступа к БД и буму, он работает!

+0

Это потому, что ['Integrated Security = SSPI'] (https://www.connectionstrings.com/microsoft-ole-db-provider-for-sql-server-sqloledb/trusted-connection/) означает, что ваши текущие учетные данные Windows Authenticated переход на SQL Server, и вы аутентифицированы в режиме Windows, а не в режиме SQL Server. Подобно тому, как Керри сказал, что пользовательские creds, которые вы передали, игнорируются, проверяется только текущая учетная запись Windows Authenticated. – Lankymart