2014-09-05 201 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;"