C# 如何在C中以编程方式创建SQL Server数据库#
我想创建一个程序,它将使用SQLServer2008数据库。在第一次启动期间,我想打开一个窗口,让用户创建一个数据库。这将是简单的,文本框的名称和ip的数据库计算机设置和按钮“去” 程序将在WPF.NET4中。数据库将位于本地网络中 你能给我一个好的解决方案吗?这样做是一种好的编程实践吗?或者我应该附加一个sql脚本 我做了一些研究,我发现这篇文章: 但是,第一个问题是,在SQLServer2008中,没有C# 如何在C中以编程方式创建SQL Server数据库#,c#,sql-server,database,sql-server-2005,sql-server-2008,C#,Sql Server,Database,Sql Server 2005,Sql Server 2008,我想创建一个程序,它将使用SQLServer2008数据库。在第一次启动期间,我想打开一个窗口,让用户创建一个数据库。这将是简单的,文本框的名称和ip的数据库计算机设置和按钮“去” 程序将在WPF.NET4中。数据库将位于本地网络中 你能给我一个好的解决方案吗?这样做是一种好的编程实践吗?或者我应该附加一个sql脚本 我做了一些研究,我发现这篇文章: 但是,第一个问题是,在SQLServer2008中,没有Microsoft.SqlServer.smoneum.dll。所以,当我执行类似的“数据
Microsoft.SqlServer.smoneum.dll
。所以,当我执行类似的“数据创建”窗口时,但对于SQLServer2008(可能使用不同的DLL),它将不适用于SQLServer2005。并且可能不会与其他版本的SQLServer2008一起工作,以避免?我不知道。。codeproject的例子看起来不错,但我不确定
我想做一个灵活的计划 我建议不要以编程方式实际创建数据库。正如您所提到的,使用不同版本的SMO,这有点像一场噩梦 我的做法是:
- 在安装过程中,提供一个“默认”空数据库,该数据库包含基本结构(所有表和所有内容)以及某些表中的一些基本查找数据
- 当用户表示您的应用程序没有现有数据库时,请将MDF/LDF/以及NDF文件复制到SQL Server数据位置
- 以编程方式将这些数据库文件附加到SQL Server实例
这似乎是一种更干净、更灵活的方法。我建议不要以编程方式实际创建数据库。正如您所提到的,使用不同版本的SMO,这有点像一场噩梦 我的做法是:
- 在安装过程中,提供一个“默认”空数据库,该数据库包含基本结构(所有表和所有内容)以及某些表中的一些基本查找数据
- 当用户表示您的应用程序没有现有数据库时,请将MDF/LDF/以及NDF文件复制到SQL Server数据位置
- 以编程方式将这些数据库文件附加到SQL Server实例
这似乎是一种更干净、更灵活的方法。数据库创建本身可能不需要成为代码的一部分。特别是,如果只需要创建一次数据库。我建议您使用Windows installer或Inno安装程序(我更喜欢Inno安装程序)创建安装程序。使用安装程序,您可以提示用户输入其SQL server名称及其管理用户的登录凭据。然后,您可以使用它们运行包含CREATE数据库和CREATE TABLE语句的SQL脚本,等等。希望这有帮助 数据库创建本身可能不需要是代码的一部分。特别是,如果只需要创建一次数据库。我建议您使用Windows installer或Inno安装程序(我更喜欢Inno安装程序)创建安装程序。使用安装程序,您可以提示用户输入其SQL server名称及其管理用户的登录凭据。然后,您可以使用它们运行包含CREATE数据库和CREATE TABLE语句的SQL脚本,等等。希望这有帮助 我会避免SMO 这在很大程度上取决于您的受众和您对预期环境的控制,但是附加预制数据库虽然是一个方便的选项,但有时可能会有问题——首先,它是源代码管理下的二进制文件,因此您无法在源代码管理系统中免费获得差异。此外,您正在附加一个带有某些选项和内容的数据库,这些选项和内容可能不适合特定的目标环境—SQL Server 2005、SQL Server 2008、SQL Server 2008 R2?除此之外,它是一种有效的方法,类似于过去部署Access应用程序的方式 在一个控制较少的环境中,我会生成一个包含所有DDL(以及查找表的DML)的SQL脚本,或者提供一个脚本,提供自动运行该脚本的功能,并让他们可以使用自己的工具(如果他们有DBA)自行运行该脚本 现在,您的脚本(或者至少是脚本的模板或生成脚本的代码)处于源代码管理之下,可以满足希望检查它的DBA的要求。我会避免SMO 这在很大程度上取决于您的受众和您对预期环境的控制,但是附加预制数据库虽然是一个方便的选项,但有时可能会有问题——首先,它是源代码管理下的二进制文件,因此您无法在源代码管理系统中免费获得差异。此外,您正在附加一个带有某些选项和内容的数据库,这些选项和内容可能不适合特定的目标环境—SQL Server 2005、SQL Server 2008、SQL Server 2008 R2?除此之外,它是一种有效的方法,类似于过去部署Access应用程序的方式 在一个控制较少的环境中,我会生成一个包含所有DDL(以及查找表的DML)的SQL脚本,或者提供一个脚本,提供自动运行该脚本的功能,并让他们可以使用自己的工具(如果他们有DBA)自行运行该脚本
现在,您的脚本(或者至少是脚本的模板或生成脚本的代码)处于源代码管理之下,可以满足希望检查它的DBA的要求。我不知道是否正确理解。建议向用户询问服务器名称、身份验证以及(如果是sql Server身份验证)登录和密码。然后创建到“主”数据库的连接字符串。使用master创建我的数据