HKLM\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources
以及這裡:
HKLM\SOFTWARE\ODBC\ODBC.INI\Name You Gave the DSN
請查看這個資料庫類型所需要的登錄機碼及值,然後將該資訊插入指令碼中。如果仍不確定如何完成這項工作,請給我們一兩週的時間,我們會設法在「指令碼中心」公佈一些針對其他 ODBC 資料庫的範例指令碼。
無論如何,以下是使用 SQL Server 建立 DSN 的一段指令碼:
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources"
strValueName = "Script Repository"
strValue = "SQL Server"
objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
strKeyPath = "SOFTWARE\ODBC\ODBC.INI\Script Repository"
objReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath
strKeyPath = "SOFTWARE\ODBC\ODBC.INI\Script Repository"
strValueName = "Database"
strValue = "Script Center"
objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
strValueName = "Driver"
strValue = "C:\WINDOWS\System32\SQLSRV32.dll"
objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
strValueName = "Server"
strValue = "atl-sql-01"
objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
strValueName = "Trusted_Connection"
strValue = "Yes"
objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
我們承認內容有點長,但那是因為其中有一些必須建立的登錄機碼及值。不過,大部份的指令碼還是簡單易懂。我們一開始將常數 HKEY_LOCAL_MACHINE 設定為 &H80000002;這個值是連接至登錄 HKLM 部份所必需的。然後我們連結到 WMI 服務,以及 StdRegProv 類別 (如我們常提醒您的,此類別位於 root\default 名稱空間中)。
從那裡,我們會使用指定給新 DSN 的名稱 Script Repository 來建立新的登錄值 (HKLM\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources\Script Repository)。我們將這個登錄值的值設為 SQL Server,因為那是我們要連接到的資料庫類型。
您看懂了嗎?在那之後,我們建立新的登錄「機碼」:HKLM\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources\Script Repository (注意機碼名稱和 DSN 名稱相同)。接著就必須設定下列登錄值:
Database -- 要連接到的實際資料庫的名稱。在這個範例中,資料庫命名為 ScriptCenter。
Driver -- SQL Server ODBC 驅動程式的路徑。在這個範例中,這個路徑為 C:\WINDOWS\System32\SQLSRV32.dll。
Server -- 資料庫所在伺服器的名稱。在這個案例中,伺服器名稱為 atl-sql-01。
Trusted_Connection -- 告訴 SQL Server 要使用我們存取資料庫時所用的登入憑證。這樣可以讓我們連接到資料庫,而不用提供使用者名稱及密碼。
就是這麼回事;執行指令碼後,您就會有全功能的 DSN。
一旦完成 DSN 之後,要如何移除它呢?那也同樣的簡單:畢竟,只是要刪除第一段指令碼建立的登錄機碼和值罷了。以下就是刪除 DSN Script Repository 的指令碼:
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\ODBC\ODBC.INI\Script Repository"
objReg.DeleteKey HKEY_LOCAL_MACHINE, strKeyPath
strKeyPath = "SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources"
strValueName = "Script Repository"
objReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName
請注意,這段指令碼中所做的就是刪除已建立的第一個登錄值 (Script Repository),再刪除建立的登錄機碼。我們不一定要在該機碼內刪除個別登錄值,因為刪除 HKLM\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources\Script Repository 也會刪除所有的值。 |