Как удалить источник данных ODBC с помощью Batch или VBS? - PullRequest
0 голосов
/ 30 июня 2010

Мне нужно удалить источник данных ODBC на ~ 30 компьютерах, и я надеялся, что будет более быстрый способ, чем использовать графический интерфейс администрирования ODBC.Это разовая сделка, поэтому я надеюсь использовать VBS или Batch-файл.Я пытался использовать reg delete, но источник данных все еще работает в графическом интерфейсе администратора ODBC.

Кто-нибудь знает, как удалить источник данных ODBC с помощью VBS или пакетного файла?

Ответы [ 2 ]

1 голос
/ 01 июля 2010

Вы можете сделать это, но это не очень аккуратно, потому что вам придется редактировать реестр напрямую.Если быть более точным, ваши DSN (или, по крайней мере, системные, которые я использовал) хранятся в HKLM\SOFTWARE\ODBC\ODBC.INI как подкаталог и как один ключ в подкаталоге ODBC Data Sources.

Эта статья Technet должна предоставить вам все технические детали: Могу ли я создать и удалить DSN с помощью сценария?

В общем, если вам нужно что-то сделать с помощью сценариев, Блог сценаристов - хорошее место для поиска информации.

0 голосов
/ 20 октября 2011

Я делаю это, но то, что облегчает это, - это использование «файловых уведомлений о доставке» вместо системных или пользовательских уведомлений о доставке. Тогда мне нужно только удалить файл, чтобы избавиться от соединения.

Вот черновик о том, как сделать File 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
...