星期五, 10月 14, 2011

Web Server (win2k8 R2 64位元) 跨至 DB Srver (SQL Server2000 32位元)


Web Server:
       OS:window 2008 std 64位元 的環境
       IIS+ asp.net
DB Server:
       OS:window 2003 R2 std
       DB: SQL Server 2000 sp2
當在Win2k8 R2 64位元跑 asp.net 時,出現下面訊息

--------------------------------------------------------------------------------------------------------------
The stored procedure required to complete this operation could not be found on the server.Please contact your system administrator. (伺服器上找不到完成這項作業所需要的預存程序。請和系統管理員連絡)
Cannot obtain the schema rowset "DBSCHEMA_TABLES_INFO" for OLE DB provider "SQLNCLI" for linked server "".The provider supports the interface, but returns a failure code when it is used. (無法為連結伺服器 的 OLE DB 提供者 "SQLNCLI" 取得結構描述資料列集 "DBSCHEMA_TABLES_INFO"。提供者支援介面,但在使用時傳回失敗碼。)
 -----------------------------------------------------------------------------------------------------

從Web Server (win2k8 R2 64位元) 跨至 DB Srver (win2003 32位元,SQL Server2000 sp2 32位元)


讀取資料時發生上面錯誤,依Microsoft技術支援 http://support.microsoft.com/kb/906954文件

發生的原因

發生這個問題的原因,是因為系統預存程序沒有升級為 SQL Server 2000 SP3 或 SQL Server 2000 SP4。


安裝 SQL Server 2000 SP3 或 SQL Server 2000 SP4 之後,您必須手動升級系統預存程序。
解決方案



如果要解決這個問題,請在 32 位元 SQL Server 2000 伺服器上安裝 SQL Server 2000 SP3 或 SQL Server 2000 SP4;


然後,在 32 位元 SQL Server 2000 伺服器上手動執行 SQL Server 2000 SP3 或 SP4 隨附的 Instcat.sql 指令碼。


----------使用 Windows 驗證模式---------

如果要使用「Windows 驗證」模式升級 SQL Server 2000 的 32 位元執行個體上的系統預存程序,請依照下列步驟進行:

1.以 SQL Server sysadmin 固定伺服器角色成員的 Windows 帳戶登入電腦。

2.按一下 [執行],輸入 cmd.exe,然後按一下 [確定]。

3.在命令提示字元中輸入下列其中一個命令,然後按下 ENTER:

對於預設執行個體

osql -E -S -i \instcat.sql

對於具名執行個體

osql -E -S \ -i \instcat.sql

注意代表連結的伺服器名稱、執行個體名稱以及含有 Instcat.sql 指令碼的資料夾完整路徑。

根據預設,這個資料夾位於 C:\Program Files\Microsoft SQL Server\MSSQL\Install。



---------使用 SQL Server 驗證模式---------

如果要使用「SQL Server 驗證」模式升級 SQL Server 2000 的 32 位元執行個體上的系統預存程序,請依照下列步驟進行:

1.使用任何 Windows 帳戶登入電腦。

2.按一下 [執行],輸入 cmd.exe,然後按一下 [確定]。

3.在命令提示字元中輸入下列命令,再按下 ENTER 鍵:

對於預設執行個體

osql -U -P -S -i \instcat.sql

對於具名執行個體

osql -U -P -S \ -i \instcat.sql

注意代表 SQL Server sysadmin 固定伺服器角色成員的使用者帳戶。

注意 在您執行 Instcat.sql 指令碼之後,會產生許多訊息,最後一個訊息會指出指令碼是否執行成功。
-----------------------------------------------------------------------------------------------------------
Comment: 重點~
      1. SP4 install 會在C:\ 下有一個sp4目錄,在執行目錄中 .bat檔
      2. 裝好後先重開機
      3.將 instcat.sql  移到C:\ 下  再用 DOS 模式執行 比較沒問題,comand 如下:
     
       c:\osql -E –S "server名字" -i c:\instcat.sql