Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用Perl连接到MS SQL而不使用ODBC DSN_Sql Server_Database_Perl - Fatal编程技术网

Sql server 使用Perl连接到MS SQL而不使用ODBC DSN

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

有没有一种方法可以使用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 <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中,并添加额外的处理逻辑将传递用户的广告凭据,而无需将其包含在程序中。由于您的
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界面中显示的驱动程序名称。请随意调整。。。