使用 pymssql 執行 ALTER DATABASE testdb SET SAFETY OFF 時出現錯誤:ALTER DATABASE statement not allowed within multi-statement transaction。
這類 ALTER DATABASE 語句不能在多語句交易中執行,而 pymssql 預設可能開啟了交易。
使用 Python 的 popen 呼叫 sqlcmd.exe 來執行這類語句:
import subprocess
subprocess.call(['sqlcmd', '-S', '127.0.0.1', '-U', 'sa', '-P', 'pwd', '-d', 'master',
'-Q', 'ALTER DATABASE testdb SET SAFETY OFF'])