Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vbscript 如何使用批处理或VBS卸载ODBC数据源?_Vbscript_Odbc_Uninstallation - Fatal编程技术网

Vbscript 如何使用批处理或VBS卸载ODBC数据源?

Vbscript 如何使用批处理或VBS卸载ODBC数据源?,vbscript,odbc,uninstallation,Vbscript,Odbc,Uninstallation,我需要在大约30台计算机上卸载一个ODBC数据源,并希望有一种比使用ODBC管理GUI更快的方法。这是一次性交易,所以我希望使用VBS或批处理文件。我尝试过使用reg delete,但数据源仍然显示在ODBC管理GUI中 有人知道如何卸载带有VBS或批处理文件的ODBC数据源吗?您可以这样做,但它不是很整洁,因为您必须直接编辑注册表。更具体地说,您的DSN(或至少是我使用过的系统DSN)存储在HKLM\SOFTWARE\ODBC\ODBC.INI中,既作为子目录,也作为单个键存储在ODBC数据源

我需要在大约30台计算机上卸载一个ODBC数据源,并希望有一种比使用ODBC管理GUI更快的方法。这是一次性交易,所以我希望使用VBS或批处理文件。我尝试过使用
reg delete
,但数据源仍然显示在ODBC管理GUI中


有人知道如何卸载带有VBS或批处理文件的ODBC数据源吗?

您可以这样做,但它不是很整洁,因为您必须直接编辑注册表。更具体地说,您的DSN(或至少是我使用过的系统DSN)存储在
HKLM\SOFTWARE\ODBC\ODBC.INI
中,既作为子目录,也作为单个键存储在
ODBC数据源
子目录下

这篇Technet文章应该为您提供所有技术细节:


一般来说,如果您需要通过脚本执行某些操作,则是查找信息的好地方。

我这样做,但使用“文件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
SET fileobject=Tools\T4e\t4esql.exe
:循环
调用:GETDIR“%dir%”
如果存在“%dir%\%fileobject%”(
包含对象%fileobject%的回显目录为%dir%>>forcePasswordReset.bat.log
后藤:找到了
)
如果“%dir:~-1%”=(
未找到包含“%fileobject%”的回显目录!!!!!>>forcePasswordReset.bat.log
后藤:找到了
)
转到环路
:找到
如果不存在mssql.dsn(
未找到ECHO MSSQL DSN>>forcePasswordReset.bat.log
电话:MSSQLDSN
)
::测试数据库连接
::测试用户在数据库中的唯一性,否则失败脚本
从用户登录='%USERNAME%';>>feset.bat.log
%dir%\%fileobject%-d:“FILEDSN=%CD%\mssql.dsn”-q:“从用户登录=“%USERNAME%”的用户中选择计数(用户登录)”-o:%CD%\COUNT.res noheaders nostats
设置/P CNT=<%CD%\count.res
echo在数据库%CNT%中找到此用户的次数。>>feset.bat.log
后藤:结束
:MSSQLDSN
SET/P MDB=什么是MSSQL数据库名称?
如果“%MDB%”=(
ECHO您需要在本地SQL实例上键入MSSQL数据库名称。
如果出错,请删除.dsn文件,然后重试此脚本。
回声。
转到MSSQLSN
)
:MSSQLDSN
@echo[ODBC]>mssql.dsn
@echo DRIVER=SQL Server>>mssql.dsn
@echo UID=%USERNAME%>>mssql.dsn
@echo Trusted_Connection=Yes>>mssql.dsn
@echo数据库=%MDB%>>mssql.dsn
@echo WSID=%COMPUTERNAME%>>mssql.dsn
@echo应用程序=Microsoft数据访问组件>>mssql.dsn
@echo服务器=(本地)>>mssql.dsn
@echo Description=本地SQL实例>>mssql.dsn
@回声。>>mssql.dsn
后藤:EOF
:GETDIR
设置“dir=%~dp1”
设置“dir=%dir:~0,-1%”
::回显%dir%
后藤:EOF
:结束
暂停

谢谢,我不知道我怎么会错过那篇文章。显然,我缺少了
ODBC数据源
键。