ろご

SQL CLR-データ移行-

データ移行

リモートサーバなどからデータを読み取り、実行サーバへデータを追加するプロシージャです。

仕様

SQLServer(リモート)→SQLServer(カレント)
MDB→SQLServer(カレント)
CSV→SQLServer(カレント)
をサポートしています。

クラス名は『Wankuma.Kaya.ReadTools』です。
存在しているものは以下の通りです。

ReadRefDBData
InsertRefDBData
InsertRefDBDataForSameName

ReadRefDBData

このメソッドはリモートサーバなどから取得したデータを表示するものです。
引数は文字列で『接続文字列』と『対象テーブル名(ファイル名)』です。

InsertRefDBData

このメソッドはリモートサーバなどから取得したデータを、実行サーバのテーブルへ追加する処理です。
引数は文字列で『接続文字列』と『読取対象テーブル名(ファイル名)』、『追加対象テーブル名』です。

InsertRefDBDataForSameName

このメソッドはリモートサーバなどから取得したデータを、実行サーバのテーブルへ追加する処理です。
引数は文字列で『接続文字列』と『読取・追加対象テーブル名(ファイル名)』です。

ダウンロード

ダウンロードはこちらよりお願いします。DL

動作確認

Microsoft Visual C# 2005にてコンパイルし、
SQL Server 2005 Expressにて動作確認をしています。

使用上の注意

SQL CLRを動かせるようになるまでに、苦労されるかもしれません。
以下のことを行ってください。
  • DLLのダウンロード、保存
  • アセンブリの登録(Unsafeで登録してください。)
  • CLR 統合機能の有効化
  • プロシージャ実行ユーザへの権限付与
  • データベースへの信頼設定
  • プロシージャ作成
またデータ読み込み対象がAccess(MDB)やファイルの場合、 SQLServerのプロセスからファイルがアクセスできるように設定しておいてください。
対象ファイルに対してセキュリティの設定をしてください。

アセンブリ登録方法

アセンブリの登録は『CREATE ASSEMBLY』を使用して行うか、『Microsoft SQL Server Management Studio』を使用して登録します。
CREATE ASSEMBLYの例はこちらです。
ファイル名にはダウンロードしたDLLファイルへのパスを記述してください。

CREATE ASSEMBLY [KayaLib]
FROM 'ファイル名'
WITH PERMISSION_SET = UNSAFE
			    

Microsoft SQL Server Management Studioでの操作は以下の通りです。
画像をクリックして拡大表示にて参照してください
手順1
手順2

CLR 統合機能の有効化


sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO
                

プロシージャ実行ユーザへの権限付与

					
GRANT UNSAFE ASSEMBLY TO [ユーザ名];
GO
					
				

データベースへの信頼設定

					
ALTER DATABASE [データベース名] SET TRUSTWORTHY ON;
GO
					
				

プロシージャ作成

					
CREATE PROCEDURE [dbo].[ReadRefDBData]
	@str [nvarchar](max),
	@tbl [nvarchar](max)
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [KayaLib].[Wankuma.Kaya.ReadTools].[ReadRefDBData]
GO
					
				
					
CREATE PROCEDURE [dbo].[InsertRefDBDataForSameName]
	@str [nvarchar](max),
	@tbl [nvarchar](max)
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [KayaLib].[Wankuma.Kaya.ReadTools].[InsertRefDBDataForSameName]
GO
					
				
					
CREATE PROCEDURE [dbo].[InsertRefDBData]
	@str [nvarchar](max),
	@reftbl [nvarchar](max),
	@curtbl [nvarchar](max)
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [KayaLib].[Wankuma.Kaya.ReadTools].[InsertRefDBData]
GO
					
				




Copyrightc 夏椰@わんくま同盟 All Rights Reserved.