2014-10-30 65 views
1

我想以编程方式创建用户DSN。我已阅读this和类似的SO问题;推动MSDN论坛;并在其他几个地方查看,以了解如何使SQLConfigDataSource发挥作用。在上面链接的SO帖子中,我看到SQLConfigDataSourceW被引用,但找不到对此的引用。如何在Visual Studio 2012 C#项目中使用SQLConfigDataSource

我想在Visual Studio 2012 C#项目中使用SQLConfigDataSource或类似的函数,但不知道我的.cs文件中应该包含什么。

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

我看了一下System.Data.Odbc,并且SQLConfigDataSource看起来不是那个的一部分。 我相信ODBC驱动程序安装在我的工作站上。除了使用.reg文件或手动创建DSN之外,我还可以尝试其他哪些步骤?

回答

2

除了使用.reg文件或手动创建DSN之外,还可以通过编程方式尝试创建用户DSN还有哪些其他步骤?

您可以使用ODBCCONF.exe这一命令行工具,它允许您配置ODBC驱动程序和数据源名称。它使用SQLConfigDataSource函数。然而,就是这么老的技术,微软警告:

ODBCCONF.exe将在Windows数据 访问组件的未来版本中被删除。避免使用此功能,并计划修改当前使用此功能的应用程序。

我不确定退役ODBCCONF.exe会对SQLConfigDataSource有什么影响,但看起来不太好。因此,最好的方法之一是使用推荐的PowerShell命令来管理驱动程序和数据源,这里是Windows Data Access Components PowerShell Commands的列表。

您只需运行的cmdlet像Add-OdbcDsn

Add-OdbcDsn [-Name] <String> -DriverName <String> -DsnType <String> [-AsJob] [-CimSession <CimSession> ] [-PassThru] [-Platform <String> ] [-SetPropertyValue <String> ] [-ThrottleLimit <Int32> ] [ <CommonParameters>] 

如:

PS C:>添加-OdbcDsn -Name “MyPayroll” -DriverName “SQL Server本机客户端 10.0” -DsnType “系统” -SetPropertyValue @( “服务器= MyServer的”, “Trusted_Connection =是”, “数据库=工资”)

我猜你已经知道或很容易找到如何执行这些在C#中的PowerShell命令。


不幸的是,above powershell commands are for Windows 8 and above

对于Windows 7和下面你既可以:
一)使用ODBCCONF.exe
B)写入直接在C#
三)注册使用the SQLConfigDataSource function,或
d)使用PowerShell脚本的作品对于Windows 7:

PS C:\> Add-ODBCconnection2HKCU.ps1 

这里是附加ODBCconnection2HKCU.ps1:

## Add to the "HKEY_CURRENT_USER" - registry ODBC update Add a ODBC Connection as a User DSN tab 
$HKCUaddpath = "HKCU:\SOFTWARE\ODBC\ODBC.INI\LocalDeveloper" 
cd HKCU:\SOFTWARE\ODBC\ODBC.INI\LocalDeveloper 
md LocalDeveloper 
Set-ItemProperty -path $HKCUaddpath -name Database -value "Developer" 
Set-ItemProperty -path $HKCUaddpath -name Description -value "Local Developer database" 
Set-ItemProperty -path $HKCUaddpath -name Driver -value "C:\Windows\System32\SQLSRV32.dll" 
Set-ItemProperty -path $HKCUaddpath -name LastUser -value "" 
Set-ItemProperty -path $HKCUaddpath -name Server -value "Max-PCWIN1" 
Set-ItemProperty -path $HKCUaddpath -name Trusted_Connection -value "Yes" 

## This is needed for this ODBC connection to show in the "ODBC Administator" application 
cd HKCU:\SOFTWARE\ODBC\ODBC.INI\'ODBC Data Sources' 
Set-ItemProperty -path HKCU:\SOFTWARE\ODBC\ODBC.INI\'ODBC Data Sources' -name LocalDeveloper -value "SQL Server" 

REF:http://maxt2posh.wordpress.com/2009/06/07/powershell-working-with-odbc-dsn-connection/

+1

谢谢。这非常有帮助。 – octopusgrabbus 2014-11-02 16:23:29

+0

在缺乏Windows 8的情况下 - 我们在Windows 7上 - 是否有一个更老的命令可以完成同样的事情?我一直在MSDN的网站上寻找这个,并且这个命令似乎是新的。谢谢。 – octopusgrabbus 2014-11-03 15:53:13

+0

很高兴我能提供帮助,并对Windows 8的限制感到惭愧,所以我在Windows 7方案中增加了一些更多的研究。 – 2014-11-04 00:54:46

相关问题