KB2658474-修正: GetSchema 方法在 sql Server 2008 R2 或 sql Server 2012 中的 SQL Server 2008 中檢索資料表的架構資訊時,會產生不正確的結果。

Microsoft 發佈 Microsoft SQL Server 2008 Service Pack 3 (SP3)、Microsoft SQL Server 2008 R2 或 Microsoft SQL Server 2012 修正為一個可下載的檔案。 因為修正程式是累加的,所以每個新版本都包含舊版 SQL Server 2008 Service Pack 3 (SP3)、SQL Server 2008 R2 或 SQL Server 2012 修正版本中所包含的所有修復程式及所有安全性修正程式。

徵狀

假設您有一個用戶端應用程式使用 SqlConnection GetSchema 方法來檢索資料表的架構資訊。 此表格包含一個包含句號(.)的資料行名稱。 例如,資料表中的其中一個資料行名稱是 "欄 1."。 在這種情況下, GetSchema 方法傳回的結果中找不到名稱包含句號的資料行。注意: 當您使用 OleDbConnection GetSchema 方法時,就不會發生這個問題。

原因

若要評估欄的許可權,SQL Server 2008 Service Pack 1 會使用HAS_PERMS_BY_NAME函數,而不是sys.spt_columns_view_managed系統檢視中的許可權函數。 不過,如果資料行名稱包含句號,且未包含在 QUOTENAME 函數中, HAS_PERMS_BY_NAME 函數會認為使用者對該列沒有足夠的許可權。 因此,在「症狀」一節中提到的問題就會發生。

解決方案

累積更新資訊

SQL Server 2008 R2 Service Pack 2

此問題的修正程式是在 SQL Server 2008 R2 Service Pack 2 的累積更新1中第一次發行。如需如何取得此累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

2720425 SQL Server 2008 R2 Service Pack 2 的累積式更新套件1注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 R2 修正版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

2730301 在發行 SQL Server 2008 R2 Service Pack 2 之後發行的 SQL Server 2008 R2 組建

SQL Server 2012

此問題的修正程式是在 SQL Server 2012 的累積更新2中第一次發行。如需此累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

2703275 SQL Server 2012 的累積更新套件2注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2012 修正版本中所包含的所有修復程式及所有安全性修正程式。 Microsoft 建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

2692828 在發行 SQL Server 2012 之後發行的 SQL Server 2012 組建 您必須將 SQL Server 2012 修補程式套用至 SQL Server 2012 的安裝。

SQL Server 2008 R2 Service Pack 1

此問題的修正程式是在 SQL Server 2008 R2 Service Pack 1 的累積更新7中第一次發行。如需如何取得此累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

2703282 SQL Server 2008 R2 Service Pack 1 的累積更新套件7注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 R2 修正版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

2567616 在發行 SQL Server 2008 R2 Service Pack 1 之後發行的 SQL Server 2008 R2 組建

SQL Server 2008 R2

此問題的修正程式是在累積更新13中第一次發行。如需有關如何取得 SQL Server 2008 R2 累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

2679366 SQL Server 2008 R2 的累積更新套件13 注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 R2 修正版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

981356 在發行 SQL Server 2008 R2 之後發行的 SQL Server 2008 R2 組建

SQL Server 2008 SP3 的累積更新套件4

此問題的修正程式是以累積更新4第一次發行。如需有關如何取得適用于 SQL Server 2008 Service Pack 4 的累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

2673383 SQL Server 2008 的累積更新套件 4 Service Pack 3注意: 因為組建是累加的,所以每個新的修正程式版本都包含舊版 SQL Server 2008 Service Pack 4 的修正版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

2629969 在發行 SQL Server 2008 Service Pack 3 之後發行的 SQL Server 2008 組建

其他相關資訊

如需 SqlConnection GetSchema 方法的詳細資訊,請造訪下列 MSDN 網站:

有關 SqlConnection GetSchema 方法的一般資訊

狀態

Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。

需要更多協助?

擴展您的技能
探索訓練
優先取得新功能
加入 Microsoft 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與我們的其中一個 Office 支援專員連絡以深入了解您的意見。

×