我需要在〜30臺計算機上卸載ODBC數據源,並希望能比使用ODBC管理GUI更快捷。這是一次性交易,所以我希望使用VBS或批處理文件。我試過使用reg delete
,但數據源仍然在ODBC管理GUI中顯示出來。如何使用批處理或VBS來卸載ODBC數據源?
任何人都知道如何使用VBS或批處理文件卸載ODBC數據源?
我需要在〜30臺計算機上卸載ODBC數據源,並希望能比使用ODBC管理GUI更快捷。這是一次性交易,所以我希望使用VBS或批處理文件。我試過使用reg delete
,但數據源仍然在ODBC管理GUI中顯示出來。如何使用批處理或VBS來卸載ODBC數據源?
任何人都知道如何使用VBS或批處理文件卸載ODBC數據源?
你可以做到,但它不是很整潔,因爲你必須直接編輯註冊表。更具體地說,您的DSN(或至少是我使用過的系統中的那些)存儲在HKLM\SOFTWARE\ODBC\ODBC.INI
中,作爲子目錄和ODBC Data Sources
子目錄下的單個密鑰。
此Technet文章應該給你所有的技術細節:Can I Create and Delete a DSN Using a Script?
在一般情況下,如果你需要通過腳本做一些事情時,Scripting Guy Blog是尋找信息的好地方。
我這樣做,但是使用「文件DSN」而不是系統或用戶DSN很容易。然後,我只需要刪除該文件即可擺脫連接。
這裏粗略草稿如何在批處理文件中執行文件DSN。關鍵是在你的ODBC屬性文件中,你使用FILEDSN =而不是DSN =作爲參數給驅動程序:
SET fileobject=Tools\T4e\t4esql.exe
:loop
CALL :GETDIR "%dir%"
IF EXIST "%dir%\%fileobject%" (
ECHO Directory containing object %fileobject% is %dir%>>forcePasswordReset.bat.log
GOTO :FOUND
)
IF "%dir:~-1%" == ":" (
ECHO Directory containing "%fileobject%" not found!!!!!>>forcePasswordReset.bat.log
GOTO :FOUND
)
GOTO loop
:FOUND
if not exist mssql.dsn (
ECHO MSSQL DSN not found>>forcePasswordReset.bat.log
CALL :MSSQLDSN
)
:: test database connectivity
:: test user for uniqueness in database ELSE fail script
echo SELECT COUNT(user_login) FROM Users WHERE user_login='%USERNAME%';>>feset.bat.log
%dir%\%fileobject% -d:"FILEDSN=%CD%\mssql.dsn" -q:"SELECT COUNT(user_login) FROM Users WHERE user_login='%USERNAME%';" -o:%CD%\count.res noheaders nostats
set /P CNT=< %CD%\count.res
echo This user was found in the database %CNT% times.>>feset.bat.log
GOTO :END
:MSSQLDSN
SET /P MDB=What is the MSSQL database name?
if "%MDB%"=="" (
ECHO You need to type a MSSQL database name on the local SQL instance.
ECHO If you get it wrong, delete the .dsn file and try this script again.
ECHO.
GOTO MSSQLDSN
)
:MSSQLDSN
@echo [ODBC]> mssql.dsn
@echo DRIVER=SQL Server>> mssql.dsn
@echo UID=%USERNAME%>> mssql.dsn
@echo Trusted_Connection=Yes>> mssql.dsn
@echo DATABASE=%MDB%>> mssql.dsn
@echo WSID=%COMPUTERNAME%>> mssql.dsn
@echo APP=Microsoft Data ACCESS Components>> mssql.dsn
@echo SERVER=(local)>> mssql.dsn
@echo Description=Local SQL Instance>> mssql.dsn
@echo. >> mssql.dsn
GOTO :EOF
:GETDIR
SET "dir=%~dp1"
SET "dir=%dir:~0,-1%"
::echo %dir%
GOTO :EOF
:END
pause
謝謝,我不知道我是如何錯過那篇文章的。顯然我錯過了'ODBC Data Sources'鍵。 – Stevoni 2010-07-01 14:58:23