【发布时间】:2010-03-30 22:45:30
【问题描述】:
我想在 SMS 中创建我的数据库表,然后生成一个脚本,以便 C# 可以通过编程方式创建表。我目前正在 Visual Studio 中一次对每个表进行手动编码。我认为在 SQL 管理工作室中创建表然后生成一个脚本这样 c# 可以在以后执行它要好得多。你们知道怎么做吗?
【问题讨论】:
我想在 SMS 中创建我的数据库表,然后生成一个脚本,以便 C# 可以通过编程方式创建表。我目前正在 Visual Studio 中一次对每个表进行手动编码。我认为在 SQL 管理工作室中创建表然后生成一个脚本这样 c# 可以在以后执行它要好得多。你们知道怎么做吗?
【问题讨论】:
在 SQL Management Studio (2008) 中,您可以右键单击数据库,选择“任务”选项,然后选择“生成脚本”选项。向导将引导您为数据库中所需的任何内容生成一个或多个脚本。然后,您可以在 C# 中使用此脚本创建表/过程/任何内容。
编辑: 以下代码块应该执行带有 GO 语句的 sql 脚本(无论如何在 SQL 2008 上)
string script = File.ReadAllText("script.sql");
Microsoft.SqlServer.Management.Smo.Server server = new Microsoft.SqlServer.Management.Smo.Server();
server.ConnectionContext.LoginSecure = false;
server.ConnectionContext.Login = "user";
server.ConnectionContext.Password = "pass";
server.ConnectionContext.ServerInstance = "instance";
server.Databases["master"].ExecuteNonQuery(script);
【讨论】:
GO 命令不是有效的 T-SQL;它是用于分隔批次的 SSMS 结构。您需要将脚本拆分为可执行部分(它已经存在;它们只是与GO 粘贴在一起)。