Powershell中SQL连接字符串出错

时间:2014-06-06 14:52:27

标签: sql sql-server powershell

我试图从powershell运行sql查询作为SQL服务器中的预定作业(然后通过相同的PowerShell脚本通过电子邮件发送)并收到错误我无法排序进行。

###

$SqlServer = “localhost”
$SqlCatalog = “myDatabase”
$SqlQuery = “select * from MY_VIEW″
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = “server=$SqlServer;Database=$SqlCatalog; user id = myUserid; password=myPassword”
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection

这是我收到的错误:

作业步骤在PowerShell脚本的第7行收到错误。对应的行是' $ SqlConnection.ConnectionString =" server = $ SqlServer; Database = $ SqlCatalog; user id = myUserid;密码= MYPASSWORD"&#39 ;.更正脚本并重新安排作业。 PowerShell返回的错误信息是:'意外令牌' server = $ SqlServer'在表达或陈述中。 '

我的剧本出了什么问题?

1 个答案:

答案 0 :(得分:1)

代码示例包含“智能”引号。也就是说,不是普通的双引号"(0x22),而是(0x201c)和(0x201d)(仔细看看双引号是否正确而且是聪明的引用)曲线)。

这不应该是一个问题,虽然“聪明”的引用真的是一个愚蠢的想法,特别是当它们被自动用于格式化包含代码示例的博客文章时。

当复制粘贴到编辑器或直接复制到Powershell时,声明

$SqlQuery = “select * from MY_VIEW″

不会有结束语,但会有一个问号,

$SqlQuery = “select * from MY_VIEW?

这会创建一个不平衡的字符串引号,因此脚本会中断。奇怪的引用char可能是双引号(0x301c)。

对于解决方案,请非常仔细地清除“智能”引号并使用普通的"双引号。确保使用像Notepad ++这样的编辑器,而不是像Wordpad或Word那样的文字处理器。