Sql-Server

.NET SQL Server 身份驗證架構問題

  • May 12, 2020

我目前正在為客戶做一個項目。該應用程序是用 ASP.NET C# 編寫的。使用的數據庫是 SQL Server 2008。該項目是將舊的 Oracle 數據庫遷移到新的 SQL Server 數據庫,以便連接到 .NET 程式碼並正常工作。我們使用 Microsoft Microsoft SQL Server 遷移助手 (SSMA) 將 Oracle 數據庫轉換為 SQL Server。這在大多數情況下都有效,但是我們確實必須對儲存過程和一些函式進行一些更改。

問題是,現在當我嘗試執行 .NET 程式碼時,它不會拾取任何儲存過程或函式,因為它們現在具有模式前綴,而 .NET 程式碼不會拾取它。

.NET 程式碼使用 Windowws 身份驗證連接到 SQL Server 數據庫,因此我無法向使用者添加預設架構或在 SQL Server 中登錄,因為它是一個組。

有什麼辦法可以解決這個問題嗎?

如果您想了解更多資訊,我將很樂意提供。

謝謝

連接字元串

<add key="DatabaseConnectionString" value="Data Source=DATASOURCE;Initial Catalog=DATABASE;Integrated Security=true;"/>

儲存過程呼叫

// Open a connection to the database
           SqlConnection databaseConnection = GetDatabaseConnection();

           // Initialise the SQL command object
           SqlCommand cmd = new SqlCommand("PKG_PACKAGE_NAME$PR_PROCEDURE_NAME",
              databaseConnection);
           cmd.CommandType = CommandType.StoredProcedure;

博爾東倫

我不確定是什麼阻止您為使用者分配預設架構。您可以簡單地使用:

ALTER USER [NT AUTHORITY\Authenticated Users] 
WITH DEFAULT_SCHEMA = [Production]

顯然根據需要替換使用者/模式名稱。

但是,如果您可以更新程式碼以使用模式前綴,那將是最好的——更多的閱讀在這裡(功能原因)這裡(性能原因)

引用自:https://dba.stackexchange.com/questions/21158