簡體   English   中英

在C#中的Powershell腳本中運行sqlcmd或invoke-sqlcmd

[英]Running sqlcmd or invoke-sqlcmd in powershell script in c#

正在使用:

            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命令作為測試。 那確實返回了數據。 任何幫助,將不勝感激!

這可能對您有所幫助
字符串腳本=“ invoke-sqlcmd -Query \\”使用pos設置nocount; SELCECT System_date FROM location_codes \\“ -serverinstance databaseName | out-string”;

字符串腳本= @“ invoke-sqlcmd-查詢'使用pos設置nocount進行定位。System_date FROM location_codes'-serverinstance databaseName | out-string”;

我使用單個冒號的原因是,For Powershell''用於表示字符串,而我不認為Powershell識別';' 用於sql分隔符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM