LogParser连接SQL Server 2017/SQL Azure登录失败问题求助
解决LogParser连接SQL Server/Azure SQL时的空用户登录失败问题
我之前也踩过LogParser这个坑,它的连接参数规则和常规ADO/ODBC不太一样,才会导致这种看似诡异的空用户登录失败错误,给你几个针对性的解决方案:
严格遵循LogParser专属的参数命名规范
LogParser对身份验证参数的命名有自己的硬性要求,你试的User ID/UserID/User_ID都不符合它的语法,必须用全小写的user指定用户名,搭配password参数。给你一个完整的命令示例:LogParser "SELECT TOP 10 * INTO TargetTable FROM SourceLog.log" -o:SQL ^ -server:"tcp:your-sql-server.database.windows.net,1433" ^ -database:"YourDatabase" ^ -user:"your-sql-username" ^ -password:"your-sql-password" ^ -driver:"ODBC Driver 17 for SQL Server"(注:Windows命令行用
^做换行符,Linux/macOS替换为\)优先使用系统DSN而非用户DSN
如果依赖DSN连接,一定要创建系统DSN——因为LogParser在命令行环境下通常以系统权限运行,用户DSN可能无法被正常加载。另外不要把密码嵌入DSN,而是单独通过LogParser参数传递:LogParser "SELECT * INTO TargetTable FROM SourceLog.log" -o:SQL ^ -dsn:"YourSystemDSN" ^ -user:"your-sql-username" ^ -password:"your-sql-password"Windows身份验证的特殊处理
如果你的SQL实例用的是Windows身份验证,不要指定user和password,改用-trusted:ON参数,同时确保运行LogParser的本地用户拥有SQL Server的登录权限:LogParser "SELECT * INTO TargetTable FROM SourceLog.log" -o:SQL ^ -server:"YourLocalSQLServer" ^ -database:"YourDatabase" ^ -trusted:ON ^ -driver:"ODBC Driver 17 for SQL Server"查看SQL端的详细错误日志
LogParser的错误信息确实很误导人,建议直接查看SQL Server的错误日志(本地实例在SSMS的「管理- SQL Server日志」里)或者Azure SQL的诊断日志(Azure门户-数据库-诊断设置中开启并查看),里面会明确告诉你登录失败的真实原因——比如密码错误、用户未授权、IP防火墙限制等。
内容的提问来源于stack exchange,提问作者justSteve
相关产品推荐
相关产品推荐

