c# - “sqlcmd.exe -S Instance USE ...”在命令行中工作,但我无法将其移至 c# 进程
问题描述
我正在尝试将此命令移至 C# 进程:
SQLCMD.EXE -S InstanceName
USE [master]
GO
CREATE DATABASE [Ek] ON
( FILENAME = N'C:\Program Files\Microsoft SQL
Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\Ek_Primary.mdf' ),
( FILENAME = N'C:\Program Files\Microsoft SQL
Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\Ek_Primary.ldf' )
FOR ATTACH ;
GO
EXIT
我有:
try
{
Process p = CreateProcess();
p.StartInfo.FileName = @"C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE";
p.StartInfo.Arguments = "-S InstanceName" + "\n" +
"USE [master]" + "\n" +
"GO" + "\n" +
"CREATE DATABASE [Ek] ON" + "\n" +
"( FILENAME = N'C:\\Program Files\\Microsoft SQL Server\\MSSQL15.MSSQLSERVER\\MSSQL\\DATA\\Ek_Primary.mdf' )," + "\n" +
"( FILENAME = N'C:\\Program Files\\Microsoft SQL Server\\MSSQL15.MSSQLSERVER\\MSSQL\\DATA\\Ek_Primary.ldf' )" + "\n" +
"FOR ATTACH ;" + "\n" +
"GO" + "\n" +
"EXIT" + "\n";
Console.WriteLine(p.StartInfo.Arguments);
p.Start();
var output = p.StandardOutput.ReadToEnd();
var err = p.StandardError.ReadToEnd();
Console.WriteLine("O: " + output);
Console.WriteLine("E: " + err);
}
catch (Exception e) { Console.WriteLine(e.Message); ; }
它返回 err = Unexpected 参数。进入 '-?' 求助。
我试图在 cmd.exe 上设置文件名并将路径移动到参数。但它永远等待响应并且不退出 p.StandardOutput.ReadToEnd ();
我试图单独发送每一行代码,但也没有成功。
我在开始时尝试使用 /C p.StartInfo.Argument 但它没有改变任何东西。
解决方案
感谢塞尔文的建议。我做到了:
string sqlConnectionString = @"Integrated Security=SSPI;Persist Security Info=False;Data Source=InstanceName";
string script = File.ReadAllText(@"../../sql.sql");
Microsoft.Data.SqlClient.SqlConnection conn = new Microsoft.Data.SqlClient.SqlConnection(sqlConnectionString);
Server server = new Server(new ServerConnection(conn));
server.ConnectionContext.ExecuteNonQuery(script);
在 sql.sql 中我添加了我所有的 sql 行。
推荐阅读
- python - 如何在未建模为变量的时间范围内添加纸浆约束
- ruby-on-rails - 如何让 AWS Fargate 将 production.log 发送到 Cloudwatch
- flutter - Flutter - 使用 customPainter 在右下角绘制一个三角形
- javascript - javascript不工作,显示和隐藏元素
- android - 裁剪选定的图像并发送到 android 中上传
- pandas - 无法删除饼图上的 y 标签
- javascript - 使用 ajax 刷新页面是一种不好的做法吗?
- forms - 在 HTTP POST 请求中使用“x-www-form-urlencoded”正文发送具有 0 或 1 个元素的数组是否有标准化方法?
- android - 使用 Mockk 测试 RxJava repeatWhen 会返回Many
- javascript - JavaScript - 文件到字节数组