web-dev-qa-db-ja.com

PowerShellからSQL Serverデータベースに接続する

私は今しばらくオンラインで見て、多くの同様の問題を見つけましたが、何らかの理由でこれを機能させることができないようです。

SQLサーバーデータベースに接続し、クエリ結果をファイルに出力しようとしています-以下のPowerShellスクリプトを参照してください。私が不確かなのは、ユーザーIDとパスワードを接続文字列に統合する方法です。

$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」引数で「Fill」を呼び出す例外:「このバージョンのSQL ServerではWindowsログインはサポートされていません。」

30
Johnathan

接続文字列で統合セキュリティをfalseに変更します。

これを確認/検証するには、お持ちのユーザー名/パスワードでSQL管理スタジオを開き、そこからデータベースに接続/開くことができるかどうかを確認します。注意!ファイアウォールの問題である可能性もあります。

18
ojk

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;"
25
Aaron Jensen
# 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
6
Mike Clark

can統合セキュリティを使用すると仮定すると、ユーザーIDを削除して渡すことができます:

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

答えは、ウィンドウ認証については以下のとおりです

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