我試圖以編程方式創建一個新的數據庫(.mdf文件)並最終在數據庫中創建表。我不太確定使用什麼連接字符串,我在下面的代碼中看到了在多個網站上幾次拋出的代碼。在執行我得到一個錯誤:以編程方式創建數據庫(沒有權限?)
An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
Additional information: CREATE DATABASE permission denied in database 'master'.
下面是我運行後創建數據庫的代碼:
string filename = "C:\\AnalysisResultsDatabase.mdf";
string databaseName = Path.GetFileNameWithoutExtension(filename);
using (var connection = new SqlConnection("Server=localhost;Integrated security=SSPI;database=master"))
{
connection.Open();
using (var command = connection.CreateCommand())
{
command.CommandText = String.Format("CREATE DATABASE {0} ON PRIMARY (NAME={0}, FILENAME='{1}')", databaseName, filename);
command.ExecuteNonQuery();
command.CommandText = String.Format("EXEC sp_detach_db '{0}', 'true'", databaseName);
command.ExecuteNonQuery();
}
}
您的域帳戶是否具有創建數據庫所需的權限?它看起來像你得到一個權限被拒絕的錯誤。 –
[此q/a](http://stackoverflow.com/q/10481890/211627)有幫助嗎? – JDB
任何時候你使用字符串格式來構建SQL查詢,都要非常注意SQL注入。我不確定是否有用於CREATE DATABASE的選項,但對SELECT/UPDATE/INSERT/DELETE使用參數化查詢。 http://security.stackexchange.com/questions/128412/sql-injection-is-17-years-old-why-is-it-still-around –