Sql server 使用Perl连接到MS SQL而不使用ODBC DSN
有没有一种方法可以使用Perl连接到MS SQL数据库而不使用ODBC?我有几个脚本在我的生产环境中运行,我打算将它们迁移到perl 使用的示例SQLCMD:Sql server 使用Perl连接到MS SQL而不使用ODBC DSN,sql-server,database,perl,Sql Server,Database,Perl,有没有一种方法可以使用Perl连接到MS SQL数据库而不使用ODBC?我有几个脚本在我的生产环境中运行,我打算将它们迁移到perl 使用的示例SQLCMD: sqlcmd -S <dbHostName> -i <input_file> -o <output_file> sqlcmd-S-i-o 使用的样本BCP: bcp <sqlQuery> queryout <output_file> -c -t, -T -S <dbHo
sqlcmd -S <dbHostName> -i <input_file> -o <output_file>
sqlcmd-S-i-o
使用的样本BCP:
bcp <sqlQuery> queryout <output_file> -c -t, -T -S <dbHostName>
bcp查询-c-t,-t-S
主要原因是我不知道生产数据库的密码,也不知道它。因此,无论是在perl脚本中还是通过ODBC设置,我都无法传递pass短语。我注意到您的
sqlcmd
语句不包括-U
和-p
。这意味着它正在使用登录用户的凭据访问数据库
要使用ODBC和DBI实现同样的功能,请包括Trusted\u Connection=True连接字符串中的代码>。这类似于使用DSN设置向导第2页上的“使用网络登录ID进行Windows NT身份验证”单选按钮
例如,在我的Win 8.1框中,SQL Server
是ODBC数据源管理界面中相关驱动程序(而非DSN)的名称,我可以为DBI connect方法提供以下字符串:
dbi:ODBC:Driver={sqlserver};Server=myserver地址;数据库=myDataBase;Trusted_Connection=True
相反,使用DSN的字符串可能如下所示:
dbi:ODBC:myDSN
FWIW:我发现这是一个很有价值的资源。当前代码如何连接到数据库?请检查FreeTDS
-AFAIK,这是连接到SQL Server的唯一本机方法。或者,检查是否可以从脚本创建和操作临时ODBC连接。或者,使用Visual Basic检查可能的解决方案,并在Win32::OLE
模块()的帮助下将其转换为Perl。@choroba我们正在通过windows批处理文件执行sqlcmd和bcp。我们将把它们迁移到perl中,并添加额外的处理逻辑连接字符串中的code>将传递用户的广告凭据,而无需将其包含在程序中。由于您的sqlcmd
不包括-U
和-P
这可能是您的答案。这意味着我必须设置ODBC?我希望尽可能避免这样做。@louisxie“设置ODBC”是什么意思?如果您在Windows上运行,则已安装ODBC。如果您询问是否需要设置DSN,而不是您是否正确设计了连接字符串。如果您运行的是*nix,那么,根据您的发行版,您实际上可能需要进行一些设置。是的,我的意思是通过ODBC数据源管理添加一个新的DSN。您的意思是我可以通过ODBC连接到数据库而不必添加DSN吗?对不起,如果我问了一个愚蠢的问题。但是,如果你有一个正确制作的连接字符串,你能提供我一个样本吗?我目前正在使用一台windows计算机。我非常喜欢connectionstrings.com
。你的工作怎么样?可以找到SQL 2012的一组更一般的示例。@louisxie噢,为了在DBI connect方法中更清楚,ODBC连接字符串前面应该有DBI:ODBC:Driver={SQL Server}代码>。连接这两个字符串。顺便说一句:SQL Server
是在Win 8.1机器上的ODBC DSA界面中显示的驱动程序名称。请随意调整。。。