C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: リンクサーバーからRecordSetでデーター更新をしたい


(過去ログ 102 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■60888 / inTopicNo.1)  リンクサーバーからRecordSetでデーター更新をしたい
  
□投稿者/ Mira (52回)-(2011/07/22(Fri) 17:30:56)

分類:[.NET 全般] 

2011/07/25(Mon) 08:28:00 編集(投稿者)
2011/07/22(Fri) 17:33:54 編集(投稿者)
2011/07/22(Fri) 17:32:01 編集(投稿者)

いつもお世話になります

SQLServerのリンクサーバーを利用して違うサーバーのデーターを更新しようと思っています

SQLServerに行った設定は以下です
・ServerAにテーブルDataBaseA.dbo.TableAを作成(元テーブル)
・ServerBにServerAのリンクテーブルを作成
・ServerBにビューDataBaseA.dbo.TableAを作成(中身はSelect 列名 from ServerA.DataBaseA.dbo.TableA as TableA)

・ServerA,B共にコンポーネントのMSDTCのセキュリティ設定を変更
http://support.microsoft.com/kb/329332/ja
・ServerA,B共にサーバーのプロパティ、接続タブのxact abortにチェックを入れる

ここまでの作業でServerBのビューからデーターの更新ができました

しかし以下のVB5.0のプログラムでは動作せずに困っています
Rs.AddNewにて実行時エラー 3027
データベースまたはオブジェクトは読み取り専用であるため、更新できません。

参照設定:Microsoft DAO 3.51 Object Library

Set db = Workspaces(0).OpenDatabase("", False, False, "ODBC;Driver={SQL Server};Server=ServerB;DATABASE=DataBaseA;")
SQL = "SELECT * From TableA"
Set Rs = db.OpenRecordset(SQL, dbOpenDynaset)
Rs.AddNew
  〜
Rs.Update
Rs.Close
db.Close

db.Executeでinsert intoクエリの実行はできたので
私の行った設定ではRecordSetでの更新ができないのだと思っています

このプログラムを私が変更できない為になんとか
SQLServerの設定でこのプログラムを動かしたいのですが何かよい方法はないでしょうか??><

環境
Server側
Windows Server 2003 R2 SP2
SQL Server 2005 SP3
Client側
Windows XP SP2以降
Visual Studio 5.0
引用返信 編集キー/
■60900 / inTopicNo.2)  Re[1]: リンクサーバーからRecordSetでデーター更新をしたい
□投稿者/ オショウ (593回)-(2011/07/23(Sat) 12:01:46)
> 環境
> Windows Server 2003 R2 SP2
> SQL Server 2005 SP3
> Visual Basic 5.0 SP3

  まずこの環境の組み合わせでは、どんな問題があっても、正常化は自己責任
  でしょう。

  2003 Server 上でのVB5.0の動作保障はありませんし、尚且つDAO・・・
  せめてADOにしてほしいところでもありますが。(ましてODBC・・・)

  SQL Server 2005 ManagementStudio 上で、リンクサーバー相手にSQL文
  を発行すれば、問題なく動作するので、開発言語やデータベースアクセス方
  法を変更しましょう!

  開発ツール対応 OS 一覧
  ttp://www.microsoft.com/japan/msdn/vstudio/support/tools.aspx

以上。参考まで
引用返信 編集キー/
■60911 / inTopicNo.3)  Re[2]: リンクサーバーからRecordSetでデーター更新をしたい
□投稿者/ Mira (53回)-(2011/07/25(Mon) 08:27:36)
2011/07/25(Mon) 08:28:34 編集(投稿者)

回答ありがとうございます

>   2003 Server 上でのVB5.0の動作保障はありませんし、尚且つDAO・・・
>   せめてADOにしてほしいところでもありますが。(ましてODBC・・・)

環境の方誤解をまねく書き方だったので修正します

Server側
Windows Server 2003 R2 SP2
SQL Server 2005 SP3
Client側
Windows XP SP2以降
Visual Studio 5.0

質問にも書きましたがClient側のプログラムを変更することはできません

できないという回答でもいいのでわかるかたいましたらお願いします
引用返信 編集キー/
■60913 / inTopicNo.4)  Re[3]: リンクサーバーからRecordSetでデーター更新をしたい
□投稿者/ shu (878回)-(2011/07/25(Mon) 12:33:01)
No60911 (Mira さん) に返信

リンクサーバーとか関係ないんじゃないかな。
ODBC Directでないとrecordsetによる書込みは出来ないと思います。
それにはWorkSpaceからODBC用に作成するようにしないと駄目かと。
引用返信 編集キー/
■60916 / inTopicNo.5)  Re[4]: リンクサーバーからRecordSetでデーター更新をしたい
□投稿者/ Mira (54回)-(2011/07/25(Mon) 14:11:53)
No60913 (shu さん) に返信
> ■No60911 (Mira さん) に返信
>
> リンクサーバーとか関係ないんじゃないかな。
> ODBC Directでないとrecordsetによる書込みは出来ないと思います。
> それにはWorkSpaceからODBC用に作成するようにしないと駄目かと。

Shuさん回答ありがとうございます

リンクサーバー経由でなければ上記のコードで書き込みできます(ServerAに直接書き込む)
またServerB経由でも上記の接続を使用してSqlを実行したら書き込みはできました

リンクサーバーへはSqlしか実行できないとかそういう制約があるのでしたら
あきらめがつくのですが・・・
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -