Ama*_*das 5 sql-server odbc password
我正在使用 ODBC 驱动程序 17 连接到 MSSQL 服务器。为了避免 SQL 注入的可能性,请在 {} 中包含密码。现在,如果我提供像 }qwerty1234 这样的密码,我将面临问题。即以 } 开头的密码将给出无效的连接字符串错误。有人可以提出同样的解决方案吗?
另外,在密码中使用 ' (单引号)是否存在任何已知问题?
Joh*_* N. 10
The Heap\xe2\x84\xa2 \xe2\x80\x93 Consultancy \xc2\xa9\xc2\xae上存在一种情况,其中 McNets 遇到连接字符串问题。
\n我快速地说:
\n\n\n我希望您的连接字符串密码不包含以下任何一个:_ % @ ?
\n
...McNets 很快回复:
\n\n\n密码中有一个@
\n
事实证明,@(at 符号)破坏了 McNets 应用程序中的连接字符串。
\n我之前曾遇到过 SQL Server 静默安装文件中的 %(百分比)符号问题。我运行的命令类似于以下内容:
\nE:\\setup.exe /ACTION=INSTALL /CONFIGURATIONFILE=%~dpn0.ini /IACCEPTSQLSERVERLICENSETERMS /SAPWD="MyPassword%WillFail"\nRun Code Online (Sandbox Code Playgroud)\n由于 SA 密码包含 % 符号,因此安装例程不会在相应的对话框中显示该密码。这%WillFail视为附加的“DOS”参数。
多年来,我生成了很多密码,其中一些失败了,而另一些则成功了。这取决于:
\n这可以是:
\n为了改进生成密码的过程,我开始使用 KeePass 中提供的密码生成器生成长密码(15 个以上字符长度)。
\n我的密码生成器排除了以下大部分字符:
\nE:\\setup.exe /ACTION=INSTALL /CONFIGURATIONFILE=%~dpn0.ini /IACCEPTSQLSERVERLICENSETERMS /SAPWD="MyPassword%WillFail"\nRun Code Online (Sandbox Code Playgroud)\n排除某些字符的一些原因只是因为某些 RDBMS,而其他字符会破坏静默安装文件。我将尝试列出一些明显的原因和其他一些可能不太明显的原因,这些原因导致某些字符在密码中使用时失败。
\n= equal" double quote\' single quote(类似于双引号)% percentagesetup.exe当与运行提供登录密码的BAT/CMD 文件结合使用时,SQL Server 静默安装会失败。\n例如 SETUP.BAT 文件的内容:
E:\\setup.exe /ACTION=INSTALL /CONFIGURATIONFILE=%~dpn0.ini /IACCEPTSQLSERVERLICENSETERMS /SAPWD="MyPassword%WillFail"\nRun Code Online (Sandbox Code Playgroud)\n@ at sign (commercial at)user/password@oracle_sid。密码中的 @ 被解释为password和之间的终止符oracle_sid。& ampersand ? question mark_ underscore# hash} right curly bracket我收藏的其他角色之所以能出现在我的收藏中,是因为我在信息技术领域和作为数据库管理员 26 年多的时间里进行了观察。它们可能不是决定性的,但可能会在尝试连接数据库时遇到错误时对其他人有所帮助。它们还可能有助于防止在为各种 RDBMS 和用户生成密码和/或连接字符串时出现问题。
\n\n\n有人可以提出同样的解决方案吗?
\n
您也许可以使用}反斜杠转义\\ie \\},但这取决于字符串所在的位置。
我不会}在您的密码中使用 。
\n\n另外,在密码中使用 \' (单引号)是否存在任何已知问题?
\n
请参阅我上面的列表以了解可能的问题。
\n这个答案取自我在标题为“数据库密码”的topanswers 上的博客文章。
\n现在,如果我提供像 }qwerty1234 这样的密码,我将面临问题。即以 } 开头的密码将给出无效的连接字符串错误。
您可以使用 ODBC 转义字符和序列来执行此操作:{}
如果密码是,}qwerty1234那么您需要对其进行转义,尽管我发现这取决于应用程序。
我使用 .net ODBC 连接字符串生成器编写了一个小应用程序,它给出的内容如下:
Driver={ODBC Driver 17 for SQL Server};Server=.;UID=odbclogin;PWD=}qwerty1234
它没有转义它,但是当使用其他需要转义的字符时,它确实用另一个右大括号转义了右大括号。
Driver={ODBC Driver 17 for SQL Server};Server=.;UID=odbclogin;PWD={}}qwerty1234!@#$;}
我建议,如果应用程序无法使用您输入的值,那么它就无法正确处理转义序列或执行某些操作,您需要使用 或 手动{}转义}。