Windows 2003マシンからすべてのODBCシステムDSNをエクスポートする方法はありますか?Windows 2003マシンからのODBCシステムDSNのエクスポート?
答えて
システムDSNの情報は、HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI
レジストリキーの下に格納されています。そのキーを.regファイルにエクスポートして別のマシンにインポートすることができます。
更新:
プログラムで行うこともできます。ここではいくつかの例は以下のとおりです。
http://www.codeproject.com/KB/database/DSNAdmin.aspx
システムDSNはHKLM\Software\ODBC\ODBC.INI
ノード の下にWindowsレジストリに格納されています。したがって、このノードを* .regファイルにエクスポートし、このregファイルをターゲットマシンで実行すると動作します。
唯一のことは、このREGファイルには、多分、コンピュータ固有の、例えば c:\WINNT\System32\bla-bla-bla.dll
は、ターゲットマシン上でWINDOWS
のように呼び出すことができWINNTフォルダを含み、いくつかのファイルパスが含まれます。したがって、* .regファイル内のすべてのパスが最終的にインポートされるターゲットマシンに対して正しいことを確認するのに少し時間を費やす必要があります。
あなたは、彼らがユーザーDSN /システムDSNある場合に応じて、そこに登録を見つけることができない場合は、それらのことができる非常になります
[HKEY_USERS \ "ユーザーSID(これを検索しないでください。 の番号になります)\ Software \ ODBC \ ODBC.INI]
は、私はちょうどあなたが32ビットのオペレーティングシステム上にある32ビットODBCソース
regedit /e c:\backup\odbc.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI"
用と64ビットのソースの場合、または非常に単純なバットスクリプトを使って自分自身をこれを行ってきました:
regedit /e c:\backup\odbc.reg "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI"
これはすべてのDSNをバックアップしますが、必要なDNSを指定できます。
Windowsサーバーで64ビットの場合は、 "HKEY_LOCAL_MACHINE \ SOFTWARE \ ODBC \ ODBC.INI" – Darren
私は、あるコンピュータから別のコンピュータにODBC接続をコピーするためのいくつかのPowerShellの機能を書いた、彼らは掲載(および更新保持)している時:
http://powershell.com/cs/media/p/32510.aspx
# Usage:
# $srcConfig = Get-OdbcConfig srcComputerName
# Import-OdbcConfig trgComputerName $scrConfig
# Only returns data when setting values
function Get-OdbcConfig {
param($srcName)
if (Test-Connection $srcName -Count 1 -Quiet) {
# cycle through the odbc and odbc32 keys
$keys = "SOFTWARE\ODBC\ODBC.INI", "SOFTWARE\Wow6432Node\ODBC\ODBC.INI"
foreach ($key in $keys){
# open remote registry
$type = [Microsoft.Win32.RegistryHive]::LocalMachine
$srcReg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($type, $srcName)
$OdbcKey = $srcReg.OpenSubKey($key)
# red through each key
foreach ($oDrvr in $OdbcKey.GetSubKeyNames()){
# form the key path
$sKey = $key + "\" + $oDrvr
$oDrvrKey = $srcReg.OpenSubKey($sKey)
# cycle through each value, capture the key path, name, value and type
foreach ($oDrvrVal in $oDrvrKey.GetValueNames()) {
$regObj = New-Object psobject -Property @{
Path = $sKey
Name = $oDrvrVal
Value = $oDrvrKey.GetValue($oDrvrVal)
Type = $oDrvrKey.GetValueKind($oDrvrVal)
}
# dump each to the console
$regObj
}
}
}
}
# can't ping
else { Write-Host "$srcName offline" }
}
function Import-OdbcConfig {
param($trgName, $srcConfig)
if (Test-Connection $trgName -Count 1 -Quiet) {
# open remote registry
$type = [Microsoft.Win32.RegistryHive]::LocalMachine
$trgReg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($type, $trgName)
# sort out the key paths and cycle through each
$paths = $srcConfig | select -Unique Path
foreach ($key in $paths){
# check for the key and create it if it's not there
if (! $trgReg.OpenSubKey($key.Path)) { $writeKey = $trgReg.CreateSubKey($key.Path) }
# open the path for writing ($true)
$trgKey = $trgReg.OpenSubKey($key.Path, $true)
# cycle through each value, check to see if it exists, create it if it doesn't
foreach ($oDrvr in $srcConfig | where { $_.Path -eq $key.Path }) {
if (! $trgKey.GetValue($oDrvr.Name)) {
$oType = $oDrvr.Type
$writeValue = $trgKey.SetValue($oDrvr.Name, $oDrvr.Value, [Microsoft.Win32.RegistryValueKind]::$oType )
$objObj = new-object psobject -Property @{
Path = $oDrvr.Path
Name = $oDrvr.Name
Value = $trgKey.GetValue($oDrvr.Name)
Type = $trgKey.GetValueKind($oDrvr.Name)
}
}
$objObj
}
}
}
# can't ping
else { Write-Host "$srcName offline" }
}
一緒に、これらの機能を使用して、あなたはすべてをコピーすることができます1つのコンピュータODBC接続を別のコンピュータに接続する:
$ srcConfig = Get-OdbcConfig srcComputerName
インポート-OdbcConfig trgComputerName $ scrConfig
それがパス上にフィルタリングすることでのみ、お好みのODBC接続を含めることが可能です:
Import-OdbcConfig trgComputerName ($scrKeys | where { $_.Path -eq "SOFTWARE\ODBC\ODBC.INI\GoodDatabase" })
それとも、好きではないODBC接続をフィルタリング:
Import-OdbcConfig trgComputerName ($scrKeys | where { $_.Path -ne "SOFTWARE\ODBC\ODBC.INI\DatabaseIHate" })
インポートODBCConfigにはデータのみを返します値を設定するときやターゲットにpingできないときは、何も作成しないと何も言わないでしょう。
- 1. MS Access 2003:ODBCファイルDSNからSQL Serverへ:フィルタテーブル
- 2. DB2のシステムIPとポートを取得するODBC DSN
- 3. SQL Serverの優先ODBC DSN
- 4. ODBC DSN構成のテキストファイルへのリスト
- 5. PHPを使用したODBC/DSNマップドライブ
- 6. Perl DBIモジュールを使用するか、システムDSNをセットアップしてODBCを使用する方が良いですか?
- 7. 開発マシンとしてのWindows Server(2003/2008)?
- 8. SCADAシステムからのデータのエクスポート
- 9. MDBToolsドライバを使用したPHP ODBCとのDSNレス接続
- 10. ODBC経由のMSAccess - 礼儀正しい動作 - DSN設定
- 11. Windowsサーバー2003のプロセスモニター
- 12. UCanAccess経由でシステムDSNに接続
- 13. 既存のWindowsマシンからのベースドッカーイメージ
- 14. Windows 7のマシンからのバックアップルーチン
- 15. なぜ 'odbc show'コマンドが空のODBCおよびDSN設定を返すのですか?
- 16. ODBCから別のアクセスファイルにテーブルをエクスポートする
- 17. LinuxサーバからWindowsマシンへのRSYSLOG
- 18. DelphiからXP/2003のSetFileInformationByHandle?
- 19. LinuxマシンからWindowsマシンへのリモートファイル転送
- 20. あるWindowsマシンから別のWindowsマシンにzipファイルを転送する
- 21. .NET 2003 SP1でWindows 2003がクラッシュする
- 22. Windowsサーバー2003用のsvctraceviewer
- 23. Win32_LogonSession(Windows 2003)のWMIクエリエラー
- 24. Windows Server 2003 x64のActivePDFツールキット
- 25. は、システムDSNとユーザーDSNの違いを説明する助けとなるでしょうか?
- 26. システムDSNをテストする簡単な方法は?
- 27. WindowsサーバーからBigCommerceへの自動エクスポート
- 28. WPF with Windows Server 2003
- 29. godaddyからwindowsマシンにPSCPコピーファイル
- 30. Java:LinuxマシンからWindowsファイルにアクセス
お返事ありがとうございました! – Zaffiro
これは、エクスポートするサーバーのバージョンによって異なりますか? Windows 2008サーバーにエクスポートするとどうなりますか? –
@KyleJohnson私はこれがWindows 2008でもうまくいくと思いますが、現時点でこれを確認するためのバージョンはありません。私はそれがまったく役に立ったら64ビットWindows 7の下でこれを確認しました。 – Garett