我有一個數據庫,我可以使用普通的ADO.NET使用包含SQL Server登錄名的用戶名和密碼的連接字符串進行訪問。這是在IIS中運行的WCF服務中完成的。託管SQL Server實例的計算機與使用Web服務的計算機不同。使用Microsoft SMO庫使用SQL登錄憑據連接到SQL Server數據庫時出錯
connectionString="Data Source=DB_MACHINE\SQLEXPRESS;Initial Catalog=MY_TEST_DB;Connection Timeout=120;User Id=my_web_user;Password=my_pass"
我正在寫一些方法現在使用SMO,看看錶和觸發器存在。
我得到以下錯誤,這是奇怪的,因爲我不知道爲什麼它很重要,如果計算機名稱具有權限?我使用設置的SQL Server登錄用戶名/密碼登錄,那麼爲什麼錯誤會指出機器名稱。 statemetns正在執行的網絡服務器,我相信是在NETWORK SERVICE下運行,但不應該只是使用SQL Server登錄的權限?而且,我該如何糾正這個問題? SQL Server登錄可以在不使用SMO時訪問數據庫。
Error generating report: System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: An exception occurred while executing a Transact-SQL statement or batch. (Fault Detail is equal to An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is:
Microsoft.SqlServer.Management.Common.ExecutionFailureException: An exception occurred while executing a Transact-SQL statement or batch. ----> System.Data.SqlClient.SqlException: The server principal "MY_DOMAIN\WEB_SERVICE_COMPUTER$" is not able to access the database "MY_TEST_DB" under the current security context.
at Microsoft.SqlServer.Management.Common.ConnectionManager.ExecuteTSql(ExecuteTSqlAction action, Object execObject, DataSet fillDataSet, Boolean catchException)
at Microsoft.SqlServer.Management.Common.ConnectionManager.ExecuteTSql(ExecuteTSqlAction action, Object execObject, DataSet fillDataSet, Boolean catchException)
at Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType)
--- End of inner ExceptionDetail stack trace ---
at Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes exe...).