Я делаю это, но то, что облегчает это, - это использование «файловых уведомлений о доставке» вместо системных или пользовательских уведомлений о доставке. Тогда мне нужно только удалить файл, чтобы избавиться от соединения.
Вот черновик о том, как сделать 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