我正在尝试通过使用Visual Studio 2008远程连接到SQL Server Express来创建数据库。我使用SQL身份验证登录到SQL Server。我可以使用以下命令使用SQL Server Management Studio Express远程执行此操作:
创建DATABASE dbname ON (NAME = 'dbname_dat', FILENAME ='C:\ folder \ dbname.mdf')LOG ON(NAME ='dbname_log', FILENAME = 'C:\文件夹\ dbname.ldf')
但是,当我在代码中使用相同的行时,出现以下错误:
CREATE DATABASE权限被拒绝 数据库'master'。
错误编号为262,类编号为14.我的连接字符串为:
服务器=服务器;数据库=主人; trusted_connection =是;池= FALSE;
有人可以帮忙吗?
答案 0 :(得分:4)
好吧,错误信息告诉你什么是错的,不是吗?您通过C#登录的用户没有足够的权限来执行CREATE语句。
您似乎使用其他用户通过SQL Server Management Studio登录,而不是通过C#登录。您是否通过Windows身份验证和C#中的SQL Server身份验证登录SQL服务器?或者在Management Studio中,您选择了一个不同的数据库来执行sql语句?检查组合框以查找脚本使用的数据库。
答案 1 :(得分:2)
这太明显了,但请检查您在服务器上的权限。你是系统管理员还是dbcreator?
另外,请检查您的用户凭据。您的连接字符串显示为trusted_connection=yes
但您说您正在使用SQL Server身份验证登录。您或您应该使用哪一个?
答案 2 :(得分:1)
尝试将连接字符串修改为与此类似的内容(注意用户和密码设置):
tmpConn.ConnectionString = "SERVER = " + DBParam.ServerName +
"; DATABASE = master; User ID = sa; Pwd = sa";
sa帐户有权执行此命令。
答案 3 :(得分:1)
我建议您的凭据不会传递到数据库。如果这是一个网站,这可能由于多种原因而发生:
在MSDN上查看有关How to Access SQL Server Using Windows Integrated Security的文章 有关设置集成安全性或切换到固定SQL Server帐户的详细说明。