我收到此错误:
数据库'master'中的CREATE DATABASE权限被拒绝。
尝试为文件
C:\APP_DATA\WRESTLING.MDF
附加自动命名的数据库失败。存在具有相同名称的数据库,或者无法打开指定的文件,或者该文件位于UNC共享上。
但是我给我的服务管理员帐户:
那么,为什么要拒绝它呢?
这是我的代码:
void ConnectToDb()
{
connStringBuilder = new SqlConnectionStringBuilder();
connStringBuilder.DataSource = @"(localdb)\MSSQLLocalDB";
connStringBuilder.InitialCatalog = "WRESTLING.MDF";
connStringBuilder.Encrypt = true;
connStringBuilder.ConnectTimeout = 30;
connStringBuilder.AsynchronousProcessing = true;
connStringBuilder.MultipleActiveResultSets = true;
connStringBuilder.IntegratedSecurity = true;
string temp = @"Server=EC2AMAZ-FN5N011\MSSQLSERVER;Database=C:\APP_DATA\WRESTLING.MDF;Trusted_Connection=True;";
string temp1 = @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=C:\APP_DATA\WRESTLING.MDF;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
string temp2 = @"Data Source = (local); AttachDbFilename = C:\APP_DATA\WRESTLING.MDF; Integrated Security = True; Connect Timeout = 30;";
conn = new SqlConnection(temp2);
comm = conn.CreateCommand();
}
此外,我正在使用IIS服务连接到SQL数据库,并且IIS也是管理员。
更新:
[{ 2
[{ 3
答案 0 :(得分:1)
您的代码是到不同服务器的连接字符串的混合。因此尚不清楚您要连接哪一个。
string temp
和string temp2
尝试连接到SQL Server的默认本地实例。您不应该对此附加任何内容,因为该实例已经有相关的数据库。
您的string temp1
尝试连接到localdb
,这是另一台服务器,而不是我们在屏幕快照中看到的那台服务器,在这里,您可以指定要附加的文件。
现在看来,您正在尝试连接到IIS APPPOOL\.NET v4.5
下的默认实例(您的IIS
在此帐户下运行),该帐户与您以前在该帐户上进行连接的帐户不同屏幕截图。
您应该将此login
映射到server
(目前尚未映射或至少没有明确地映射),然后将其映射到您的database
并使其db_owner
:
create login [IIS APPPOOL\.NET v4.5] from windows;
use WRESTLING;
go
create user [IIS APPPOOL\.NET v4.5] from login [IIS APPPOOL\.NET v4.5];
exec sp_addrolemember 'db_owner', [IIS APPPOOL\.NET v4.5];