2009-12-15 6 views
1

Je suis en train de créer une base de données en vous connectant à distance à SQL Server Express à l'aide de Visual Studio 2008. Je me connecte sur SQL Server à l'aide de l'authentification SQL. Je peux le faire à distance à l'aide de SQL Server Management Studio Express a pas de problème en utilisant la commande suivante:Création d'une base de données à distance en utilisant C#

CREATE DATABASE dbname ON (NAME='dbname_dat', FILENAME='C:\folder\dbname.mdf') LOG ON (NAME='dbname_log', FILENAME='C:\folder\dbname.ldf')

Cependant, lorsque j'utilise la même ligne dans mon code, je reçois l'erreur suivante:

CREATE DATABASE permission denied in database 'master'.

numéro d'erreur est 262 et le numéro de classe est 14. Ma chaîne de connexion est:

server=servername;database=master;trusted_connection=yes;Pooling=false;

quelqu'un peut-il aider?

Répondre

2

Ceci est trop évident, mais vérifiez vos autorisations sur le serveur. Êtes-vous un sysadmin ou un dbcreator?

Vérifiez également vos informations d'identification utilisateur. Votre chaîne de connexion indique trusted_connection=yes, mais vous indiquez que vous vous connectez à l'aide de l'authentification SQL Server. Lequel êtes-vous ou devez-vous utiliser?

4

Eh bien, le message d'erreur vous indique ce qui ne va pas, non? L'utilisateur que vous utilisez pour vous connecter via C# n'a pas l'autorisation suffisante pour exécuter des instructions CREATE.

Vous semblez utiliser un autre utilisateur à se connecter via SQL Server Management Studio que de se connecter via C#. Vous connectez-vous au serveur SQL via l'authentification Windows et via l'authentification SQL Server en C#? Ou peut-être que dans Management Studio vous avez sélectionné une base de données différente dans laquelle exécuter l'instruction sql? Vérifiez la zone de liste déroulante pour la base de données utilisée par le script.

1

Essayez de modifier la chaîne de connexion à quelque chose le long des lignes de ce (Notez l'utilisateur et les paramètres PWD):

tmpConn.ConnectionString = "SERVER = " + DBParam.ServerName + "; DATABASE = master; User ID = sa; Pwd = sa";

Le compte sa aurait le droit de faire cette commande.

+0

Petites choses. Oui, c'était le problème. Merci. J'avais travaillé si longtemps avec l'authentification de Windows, mon code pour l'authentification de SQL Server n'était pas tout ce qu'il pourrait être. Mais c'est pourquoi nous testons. –

+0

Veuillez accepter alors =) Content que vous l'ayez compris. – ajdams

1

Je suggère que vos informations d'identification ne sont pas passés par la base de données. Si cela est un site Web, cela pourrait se produire pour plusieurs raisons:

  • Vous n'avez pas l'usurpation d'identité activée
  • Vous avez l'authentification de base est activée dans IIS ..

Voir cette article sur MSDN sur How to Access SQL Server Using Windows Integrated Security pour obtenir des instructions détaillées sur la configuration de la sécurité intégrée ou basculer vers un compte SQL Server fixe.

Questions connexes