【问题标题】:Running sqlcmd or invoke-sqlcmd in powershell script in c#在 c# 的 powershell 脚本中运行 sqlcmd 或 invoke-sqlcmd
【发布时间】:2018-07-15 01:57:04
【问题描述】:

一直在使用:

            private string RunScript(string storeNumber)
    {
        //string importSQL = "Import-Module sqlserver -DisableNameChecking";
        //string executionPolicy = "Set-ExecutionPolicy -ExecutionPolicy Unrestricted";
        //string script = "ping databaseName";
        //string script = "sqlcmd - h - 1 - Q \"set nocount on;SELECT System_Date FROM Location_Codes\" - d pos - S databaseName | out-string";
        string script = "invoke-sqlcmd -Query \"use pos set nocount on; SELCECT System_date FROM location_codes\" -serverinstance databaseName| out-string";
        Runspace runspace = RunspaceFactory.CreateRunspace();
        runspace.Open();

        Pipeline pipeline = runspace.CreatePipeline();
        //pipeline.Commands.AddScript(importSQL);
        //pipeline.Commands.AddScript(executionPolicy);
        pipeline.Commands.AddScript(script);


        Collection<PSObject> results = pipeline.Invoke();

        runspace.Close();

        StringBuilder stringBuilder = new StringBuilder();
        foreach(PSObject obj in results)
        {
            stringBuilder.AppendLine(obj.ToString());
        }
        MessageBox.Show(stringBuilder.ToString());
        return stringBuilder.ToString();

    }

尝试 sqlcmd 时,我没有收到任何错误,但没有返回任何内容(即使直接在 powershell 中键入命令可以获得我想要的数据)

在尝试 invoke-sqlcmd 时,我得到一个 CmdletInvocationException 抛出。 对于我添加的那个错误

      <startup useLegacyV2RunttimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>

添加了 ping 命令作为测试。那确实返回数据。 任何帮助将不胜感激!

【问题讨论】:

    标签: c# powershell sqlcmd invoke-sqlcmd


    【解决方案1】:

    这可能对你有帮助 从
    改变 string script = "invoke-sqlcmd -Query \"使用 pos set nocount on; SELCECT System_date FROM location_codes\" -serverinstance databaseName| out-string";

    string script = @"invoke-sqlcmd -Query 'use pos set nocount on 去 选择 System_date FROM location_codes' -serverinstance databaseName|字符串外";

    我使用单冒号的原因是,For Powershell '' 用于表示字符串 而且我不认为 Powershell 识别 ';'用于 sql 分隔符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      • 2012-09-18
      • 2017-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多