AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 301368
Accepted
AxD
AxD
Asked: 2021-10-20 15:25:49 +0800 CST2021-10-20 15:25:49 +0800 CST 2021-10-20 15:25:49 +0800 CST

Permissão CREATE DATABASE negada no banco de dados 'mestre'. Não é possível anexar

  • 772

Em um script T-SQL, usando uma string de conexão como esta:

Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=C:\Temp\ContextTest.mdf;Initial Catalog=ContextTest;Integrated Security=True

... EU ...

  1. criar um banco de dados SQL Server LocalDB
  2. crie um login e adicione um usuário ao banco de dados que criei
  3. Eu não adiciono nenhuma função de banco de dados ao usuário.
  4. Eu crio uma tabela e concedo direitos SELECT, INSERT, UPDATE, DELETE, REFERENCE ao usuário

O script se parece com isso:

CREATE LOGIN [U] WITH PASSWORD = '***'
CREATE USER [U] FROM LOGIN [U]
CREATE TABLE [U].[TestEntities]
  ( Id INT PRIMARY KEY IDENTITY
  , Name NVARCHAR(100) NOT NULL UNIQUE
  )
GRANT INSERT, DELETE, SELECT, REFERENCES, UPDATE ON [U].[TestEntities] TO [U];

Em seguida, estou usando o SSMS para inspecionar tudo, usando as credenciais que acabei de criar .

Quando me conecto no SSMS usando o usuário recém-criado, posso consultar facilmente a [U].[TestEntities]tabela usando uma consulta como esta:

SELECT COUNT(*) FROM U.TestEntities

Captura de tela do SSMS


Então, se eu fizer o mesmo em .NET, recebo uma mensagem de erro alegando que eu exigiria direitos CREATE DATABASE:

using namespace System.Data.SqlClient

try {
    $con = [SqlConnection]::new('Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=C:\Temp\ContextTest.mdf;Initial Catalog=ContextTest;User ID=U;Password=***')
    $cmd = $con.CreateCommand()
    $cmd.CommandText = 'SELECT COUNT(*)
FROM [U_MCL].[TestEntities] AS [t]'

    $con.Open()
    $cmd.ExecuteScalar()
} finally {
    $con.Dispose()
}
MethodInvocationException: C:\Temp\Test.ps1:9:2
Line |
   9 |      $con.Open()
     |      ~~~~~~~~~~~
     | Exception calling "Open" with "0" argument(s): "CREATE DATABASE permission denied in database 'master'. Cannot attach the file
     | 'C:\Temp\ContextTest.mdf' as database 'ContextTest'."

o que estou perdendo?

sql-server t-sql
  • 1 1 respostas
  • 466 Views

1 respostas

  • Voted
  1. Best Answer
    Brenton
    2021-10-20T17:49:09+08:002021-10-20T17:49:09+08:00

    Se eu li sua pergunta corretamente, quando você está fazendo isso no SSMS, você está criando o banco de dados no contexto da sua conta (usando segurança integrada), depois de criar o banco de dados, você está se conectando com as credenciais limitadas para consultar o banco de dados. Isso funciona bem porque sua conta tem permissão para criar bancos de dados, mas a credencial limitada não.

    Quando você está se conectando com C#, você está fazendo isso com as credenciais limitadas e passando AttachDbFilename que está fazendo com que o SQL Express tente criar um novo banco de dados nesse contexto, mas as credenciais limitadas não têm permissão para criar/anexar um banco de dados como sua conta, portanto, ele falha. Se você já criou o banco de dados, não precisa especificar AttachDbFilename em sua cadeia de conexão C#, basta conectar como está fazendo pela segunda vez no SSMS.

    AttachDbFilename não é a maneira ideal de fazer isso, então também valeria a pena ler esta postagem no blog de Aaron Bertrand para obter mais detalhes sobre como abordar isso melhor.

    • 3

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve