2014-09-05 174 views
20

我在網上看了一會兒,發現很多類似的問題,但由於某種原因,我似乎無法得到這個工作。從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」 的說法(S): 「Windows登錄未在此版本的SQL Server的支持。」

+0

什麼版本o你正在運行SQL嗎? – ne1410s 2014-09-05 09:38:48

+0

sql server management studio 2012 – Johnathan 2014-09-05 09:55:54

+0

您是否試圖連接到SQL Azure實例? – nabrond 2014-09-05 10:01:05

回答

15

將連接字符串中的集成安全性更改爲false。 \ Password認證互斥

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

您可以通過使用您擁有的用戶名/密碼打開SQL管理工作室來檢查/驗證該工作室,並查看是否可以從那裏連接/打開數據庫。注意!也可能是防火牆問題。 – ojk 2014-09-05 09:56:49

2

假設你可以使用集成安全性,您可以刪除用戶ID和通過。要連接到SQL Server作爲用戶運行的代碼,請從連接字符串中刪除User IDPassword

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

要與特定的憑證進行連接,刪除Integrated Security

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

Integrated SecurityUser ID

4
# 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 
0

答案是如下面的窗口認證

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