我想以编程方式创建用户DSN。我读过this和类似的SO问题;拖着MSDN论坛;并查看了其他几个地方,以了解如何使SQLConfigDataSource工作。在我上面链接的SO帖子中,我看到SQLConfigDataSourceW
被引用,但找不到对此的引用。
我想在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之外,还可以尝试其他哪些步骤?
答案 0 :(得分:2)
除了使用.reg文件或手动创建DSN之外,我还可以尝试以其他方式尝试以编程方式创建用户DSN吗?
您可以使用ODBCCONF.exe这一命令行工具,它允许您配置ODBC驱动程序和数据源名称。它使用SQLConfigDataSource函数。然而,这是一项如此古老的技术,微软警告说:
将在未来版本的Windows Data中删除ODBCCONF.exe 访问组件。避免使用此功能,并计划修改 目前使用此功能的应用程序。
我不确定退役ODBCCONF.exe会对SQLConfigDataSource
产生什么影响,但它看起来并不好看。因此,最好的方法之一是使用推荐的PowerShell命令来管理驱动程序和数据源,这里是Windows Data Access Components PowerShell Commands的列表。
您只需运行Add-OdbcDsn之类的cmdlet:
Add-OdbcDsn [-Name] <String> -DriverName <String> -DsnType <String> [-AsJob] [-CimSession <CimSession> ] [-PassThru] [-Platform <String> ] [-SetPropertyValue <String> ] [-ThrottleLimit <Int32> ] [ <CommonParameters>]
例如:
PS C:&gt; Add-OdbcDsn -Name&#34; MyPayroll&#34; -DriverName&#34; SQL Server Native 客户10.0&#34; -DsnType&#34; System&#34; -SetPropertyValue @(&#34; Server = MyServer&#34;, &#34; Trusted_Connection = Yes&#34;,&#34; Database = Payroll&#34;)
我猜你已经知道或者很容易找到如何在C#中执行这些powershell命令。
不幸的是above powershell commands are for Windows 8 and above。
对于Windows 7及更低版本,您可以:
a)使用ODBCCONF.exe
b)直接在C#中写入注册表
c)使用 the SQLConfigDataSource function 或
d)使用适用于Windows 7的Powershell脚本:
PS C:\> Add-ODBCconnection2HKCU.ps1
这是add-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"
参考:http://maxt2posh.wordpress.com/2009/06/07/powershell-working-with-odbc-dsn-connection/