SQL Server:在数据库“ master”中拒绝了CREATE DATABASE权限

时间:2018-10-30 22:14:17

标签: c# sql-server

我收到此错误:

  

数据库'master'中的CREATE DATABASE权限被拒绝。

     

尝试为文件C:\APP_DATA\WRESTLING.MDF附加自动命名的数据库失败。存在具有相同名称的数据库,或者无法打开指定的文件,或者该文件位于UNC共享上。

但是我给我的服务管理员帐户:

enter image description here

那么,为什么要拒​​绝它呢?

这是我的代码:

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也是管理员。

更新:

[{enter image description here 2

[{enter image description here 3

1 个答案:

答案 0 :(得分:1)

您的代码是到不同服务器的连接字符串的混合。因此尚不清楚您要连接哪一个。

string tempstring 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];