我使用winform
和C#
2008开发了SQL Server
应用程序。现在我的工作是在客户端的计算机上实现它。
我正在寻找在客户端计算机上创建database
tables
和stored procedure
以运行此应用程序的最佳方法。我已经生成了我所有数据库objects
的脚本。现在我想在客户端的机器上创建所有数据库对象,只需单击C#代码,读取每个表或存储过程脚本文件(即.sql或.txt)并创建它们。
答案 0 :(得分:1)
不需要smo,但有点难看
SqlCommand getDataPath = new SqlCommand("select physical_name from sys.database_files;", baseConnection); // get default path where the sqlserver saves files
string temp = getDataPath.ExecuteScalar().ToString();
temp = temp.Replace(temp.Split('\\').Last(), string.Empty);
StringBuilder sqlScript = new StringBuilder(Scripts.CreateDatabase); //CreateDatabase could be in ressources
///The @@@@ are used to replace the hardcorededpath in your script
sqlScript.Replace("@@@@MAINDATAFILENAME@@@@", string.Concat(temp, "test.mdf"));
sqlScript.Replace("@@@@LOGDATAFILENAME@@@@", string.Concat(temp, "test_log.ldf"));
string[] splittedScript = new string[] { "\r\nGO\r\n" }; //remove GO
string[] commands = sqlScript.ToString().Split(splittedScript,
StringSplitOptions.RemoveEmptyEntries);
然后在命令(SqlCommand cmd = new SqlCommand(command[x], baseConnection);
)
注意:由于某些原因,这需要管理员,因此请创建一个清单文件。
答案 1 :(得分:0)
您需要使用SMO来完成此任务。正常的ADO.NET会抱怨多语句执行等。一旦与SMO集成并拥有脚本,这真的很容易。
答案 2 :(得分:0)
Visual Studio支持数据库项目,可为您生成部署脚本。它还允许从头开始部署或升级现有数据库。部署可以作为Visual Studio或构建服务器中的构建的一部分进行自动化。如果您正在使用TFS,您也可以对数据库进行源代码控制。
基本上不再乱用脚本了!
http://msdn.microsoft.com/en-us/library/ff678491(v=vs.100).aspx