【问题标题】:Error on SQL Connection String in PowershellPowershell 中的 SQL 连接字符串错误
【发布时间】:2014-06-06 14:52:26
【问题描述】:

我正在尝试从 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; password=myPassword"'。更正脚本并重新安排作业。 PowerShell返回的错误信息是:'Unexpected token 'server=$SqlServer' in expression or statement。 '。

我的脚本有什么问题?

【问题讨论】:

    标签: sql sql-server powershell


    【解决方案1】:

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

    这应该不是问题,尽管“智能”引号真的是个愚蠢的想法,尤其是当它们自动用于格式化包含代码示例的博客文章时。

    当复制粘贴到编辑器或直接粘贴到 Powershell 中时,语句

    $SqlQuery = “select * from MY_VIEW″
    

    不会有结束引号,而是像这样的问号,

    $SqlQuery = “select * from MY_VIEW?
    

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

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

    【讨论】:

    • 就是这样!谢谢。实际上,我确实将代码(从另一个站点无耻地窃取)复制到了记事本++,但显然这并没有抓住那些。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 2013-02-11
    相关资源
    最近更新 更多