2017-01-14 4 views
-1

Я пытаюсь передать имя пользователя, db и pwd как переменную в sqlcmd - но, похоже, это не нравится.Параметр пропуска Powershell для sqlcmd

Это работает

#Run SQLCMD for each file 
ForEach ($FileName in $FileNames) 
{ 
    Write-Host $FileName.BaseName 
    sqlcmd -S 123.database.net -d EMR -U user1-P mypassword -i $FileName.FullName 
} 

Это не работает

#Run SQLCMD for each file 
$db = "123.database.net" 
$dbId = "user1" 
$pwd = "mypassword" 

ForEach ($FileName in $FileNames) 
{ 
    Write-Host $FileName.BaseName 
    sqlcmd -S $db -d EMR -U $dbId -P $pwd -i $FileName.FullName 
} 

Сообщение об ошибке

sqlcmd : Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Login failed for user 'user1'..

+0

Что означает «не работает»? Какие сообщения об ошибках вы получаете? Вы выводите исполняемую командную строку, чтобы убедиться, что она правильная? – alroc

ответ

0

SQLCMD имеет свою сферу .Make переменных, как Global. Тогда он должен выбрать его.

это сделать:

#Run SQLCMD for each file 
$global:db = "123.database.net" 
$global:dbId = "user1" 
$global:pwd = "mypassword" 
ForEach ($FileName in $FileNames) 
{ 

Write-Host $FileName.BaseName 
sqlcmd -S $db -d EMR -U $dbId -P $pwd -i $FileName.FullName 

} 

Примечание: я не принял во внимание, что ваш второй скриптлет бросает какую-либо ошибку, в частности, или нет.

+0

, что не помогло –

+0

@JustinHomes: Отправьте сообщение об ошибке. Было бы очень общим дать некоторое решение, не видя причины для этого. –

+0

Так, как вы упомянули, проблема с регистрацией. Вы пробовали прямо с консоли. Потому что он явно указывает, что логин не удалось выполнить для пользователя1. Означает либо проблему с паролем, либо проблему разрешения для пользователя –

Смежные вопросы