Подключение к базе данных SQL Server из PowerShell

Я некоторое время смотрел в Интернете и нашел много подобных проблем, но по какой-то причине я не могу заставить эту работу работать.

Я просто пытаюсь подключиться к базе данных SQL-сервера и выводить результаты запроса в файл. См. PowerShell script ниже. Я не уверен, как интегрировать идентификатор пользователя и пароль в строку подключения.

$SQLServer = "aaaa.database.windows.net"
$SQLDBName = "Database"
$uid ="john"
$pwd = "pwd123"
$SqlQuery = "SELECT * from table;"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True; User ID = $uid; Password = $pwd;"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)

$DataSet.Tables[0] | out-file "C:\Scripts\xxxx.csv"

Получено следующее сообщение об ошибке:

Экземпляр вызывает "Заполнить" аргументом "1": "В этой версии SQL Server не поддерживаются логины Windows".

Ответы

Ответ 1

Измените встроенную защиту на false в строке подключения.

Ответ 2

Integrated Security и User ID\Password аутентификация являются взаимоисключающими. Чтобы подключиться к SQL Server в качестве пользователя, выполняющего код, удалите User ID и Password из строки подключения:

$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True;"

Чтобы подключиться к определенным учетным данным, удалите Integrated Security:

$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; User ID = $uid; Password = $pwd;"

Ответ 3

# database Intraction

$SQLServer = "YourServerName" #use Server\Instance for named SQL instances!
$SQLDBName = "YourDBName"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; 
User ID= YourUserID; Password= YourPassword" 
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = 'StoredProcName'
$SqlCmd.Connection = $SqlConnection 
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd 
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet) 
$SqlConnection.Close() 

#End :database Intraction
clear

Ответ 4

Предполагая, что вы можете использовать интегрированную защиту, вы можете удалить идентификатор пользователя и передать:

$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True;"

Ответ 5

Ответ для аутентификации Windows

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=$SQLServer;Database=$SQLDBName;Integrated Security=True;"