まぁとりあえず進めてみる。ODBCリンクテーブルで使ってみる。
セキュリティ的にどうなんだってことはついて回るけど、それ以上にデータ転送量とかもかかわることになりそうだ。
SSMSでの作業。テーブルを作成しデータをインサートする。
create table table01
(
ID int identity primary key,
F01 nvarchar(20) collate japanese_ci_as not null,
F02 nvarchar(5) collate japanese_ci_as not null
)
go
declare @i int
set @i = 1
while @i <= 10000
begin
insert into table01 values
(
N'サンプル' + right('0000' + ltrim(str(@i)),5),
ltrim(str(@i))
)
set @i += 1
end
go
select [ID],[F01],[F02]
from [testdb01].[dbo].[table01]
go
リンクテーブルを作成する。
Function strCn() As String
strCn = "ODBC;DRIVER=SQL Server Native Client 10.0;" & _
"SERVER=tcp:hogehoge.database.windows.net;" & _
"UID=testdb01user01@hogehoge;" & _
"PWD=P@ssW0rd;" & _
"DATABASE=testdb01;" & _
"Encrypt=yes;"
End Function
Sub Createlinktable()
On Error GoTo ErrHnd
Dim dbs As DAO.Database, tdf As DAO.TableDef
Set dbs = CurrentDb
Set tdf = dbs.CreateTableDef("dbo_table01")
tdf.Connect = strCn
tdf.SourceTableName = "dbo.table01"
tdf.Attributes = dbAttachSavePWD 'ここ、お気を付けあそばせ
dbs.TableDefs.Append tdf
Application.RefreshDatabaseWindow
Done:
Set tdf = Nothing
Set dbs = Nothing
Exit Sub
ErrHnd:
MsgBox Err.Number & "/" & Error$
Resume Done
End Sub
SSMS上で全レコードをselectしてみたところ。
340KBってことでしょうか。
テーブルを直接開いた時、54KB程受信してスクロールをするたびに受信(多分、ページ分?)を繰り返す。なんにしてもテーブルを開くだけで一度に全部受信するということではないようだ。その他ソートするとそのたびに受信し直す感じになる。
フィルターされていればその対象分だけ受信するという感じになる。
日本語の扱いが困るということでしょう。パススルークエリしか方法がないか。。。
できればコストが膨れていくことは避けたいから、ODBCリンクテーブルであれこれするのは、かなり限定的な使い方になるかな。手軽ではあるけれども。
0 件のコメント:
コメントを投稿