C# - 创建新的 SQL Server 数据库导致错误

Posted

技术标签:

【中文标题】C# - 创建新的 SQL Server 数据库导致错误【英文标题】:C# - create new SQL Server database results in error 【发布时间】:2018-02-13 21:56:49 【问题描述】:

我正在尝试使用Microsoft.SqlServer.Management.Smo 以编程方式在我的服务器上创建一个新数据库,但它总是无法创建数据库:

Server svr = new Server(new ServerConnection(@".\SQLEXPRESS"));
Database db = new Database(svr, "TESTDB");
db.Create(); 

我在db.create(); 收到此错误:

Microsoft.SqlServer.Smo.dll 中发生了 Microsoft.SqlServer.Management.Smo.FailedOperationException' 类型的未处理异常

服务器名称正确,我正在使用 Windows 身份验证连接到服务器。

请帮忙,如果有更好的方法请告诉我

【问题讨论】:

是否有关于异常的消息或 InnerException?除了异常名称之外,通常还有更多可用的详细信息。 发布内部异常或更多细节 我会简单地使用 SqlClient 并使用 TSQL DDL 创建数据库。 SMO 并不容易,您必须安装它。见docs.microsoft.com/en-us/sql/t-sql/statements/… 当我点击详细信息时,它给了我这个:“数据库'TESTDB'的创建失败。” 如果你有一个 TSQL 批处理的集合,只需使用 SqlConnection 和 SqlCommand 来运行它们。无需 SMO。 【参考方案1】:

在您发布的图片中,我看到消息“执行 transact-sql 语句或批处理时发生异常”。

所以,我认为这是一个权限问题。作为explained here,你可以试试这个步骤列表:

    以管理员(或任何具有管理员权限的用户)身份登录计算机 打开“SQL Server 配置管理器” 单击左侧窗格中的“SQL Server 服务” 如果“SQL Server”和“SQL Server 代理”实例正​​在运行,请在右窗格中停止它 通过右键单击“SQL Server”实例 -> 属性(在 SQL Server 配置管理器的右侧窗格中)以单用户模式运行 SQL Express。 单击高级选项卡,然后查找“启动参数”。更改“启动参数”,使新值为 -m; (没有 ) 例子: 来自:-dc:\Program Files\Microsoft SQL.............(直到字符串结束) 到:-m;-dc:\Program Files\Microsoft SQL.............(直到字符串结尾) 启动 SQL Server 打开您的 MS SQL Server Management Studio 并使用“Windows 身份验证”作为身份验证模式登录到 SQL Server。由于我们的 SQL Server 在单用户模式下运行,并且您以管理员权限登录到计算机,因此您将拥有对数据库的“系统管理员”访问权限。 在左侧窗格中展开 MS SQL Server Management Studio 上的“安全”节点 展开“登录”节点 双击“sa”登录 如果勾选了“强制执行密码策略”,请输入复杂密码来更改密码,否则,只需输入任何密码。 通过单击左侧窗格中的状态确保“sa”帐户已“启用”。将“登录”下的单选框设置为“启用” 点击“确定” 返回 MS SQL Server Management Studio 的主窗口,通过右键单击左窗格中最顶部的节点(通常为“.\SQLEXPRESS (SQL Server )”)并选择属性来验证是否使用了 SQL Server 身份验证。 单击左侧窗格中的“安全”,并确保“SQL Server 和 Windows 身份验证模式”为“服务器身份验证”下选择的一项 点击“确定” 与 MS SQL Server Management Studio 断开连接 再次打开“Sql Server 配置管理器”并停止 SQL Server 实例。 右键单击 SQL Server 实例并单击“高级”选项卡。再次查找“启动参数”并删除“-m;”您之前添加的。 单击“确定”并再次启动 SQL Server 实例 您现在应该可以使用在第 12 步中设置的新密码以“sa”身份登录。

无论如何,如果 smo 安装正确,check here。

【讨论】:

以上是关于C# - 创建新的 SQL Server 数据库导致错误的主要内容,如果未能解决你的问题,请参考以下文章

winform,用c#链接 sql server。对数据库进行查询记录,增加记录,删除记录。,修改记录。

如何使用 C# 创建 SQL Server 2012 数据库?

Oracle导数据到SQL server的方法总结

如何在 C# MVC 应用程序中在运行时创建 SQL Server Express 数据库?

如何以编程方式创建新的本地 SQL Server 实例?

从 C# 检索 SQL Server 扩展属性