08/11/17 18:25:32
レプリケーションが上手くできないのですが、
非ドメイン下では簡単にはできないのでしょうか?
824:NAME IS NULL
08/11/17 23:50:16
ちょっと相談があったのでみんなに聞いてみる
SQL Server2005
Oracle9i
この2つのDBでレプリケーションを構築しようとしたときに、
相互更新可能なレプリケーションは、SQL Serverの標準でついている
機能で可能でしょうか?
また、MicrsofのMSDN以外に異種間レプリケーションの情報などが
ありませんでしょうか
825:NAME IS NULL
08/11/18 00:36:40
SQLServer2005 Standard
エージェントにて外部アプリケーションを呼び出して終了待ちしたいのですが、可能でしょうか?
可能であれば、どのような呼び出し構文になりますでしょうか?
826:NAME IS NULL
08/11/20 17:52:38
トランザクションログがいっぱいになったというエラーが出たので
トランザクションログのバックアップをしようとしたのですが
途中でディスクの空きが無くなって失敗してしまいます。
こういう場合どうしたらよいでしょうか?
827:NAME IS NULL
08/11/20 18:05:12
>>826
トランザクションログを切り捨ててもいいのなら、
BACKUP LOG データベース名 WITH TRUNCATE_ONLY
GO
DBCC SHRINKDATABASE('データベース名')
GO
トランザクションログを切り捨てた後は、念のためにフルバックアップしておく事を推奨。
828:NAME IS NULL
08/11/20 18:09:21
>>825
ジョブのステップ追加で、[種類]を[オペレーティング システム(CmdExec)]にすれば、
外部アプリケーションを呼び出せるけど、応答待ちしないで戻ってくるの?
829:NAME IS NULL
08/11/20 18:22:01
>>827
ありがとうございます。やってみます。
830:NAME IS NULL
08/11/20 20:05:05
sqlcmd の -p オプションについて教えてください。
-p 付きで実行すると最後に、クロック タイム (ミリ秒)が表示されますが、
以下の2つの場合では 2) の方が圧倒的に早いです。
1) sqlcmd ... -Q "select * from hoge"
2) sqlcmd ... -Q "select * from hoge" > result.txt
コンソール出力などsqlcmd自身の処理も「クロックタイム」に含まれてしまっていると
思うのですが、sqlの実行時間のみを表示させるにはどうしたらいいでしょうか?
831:NAME IS NULL
08/11/20 21:33:35
>>830
全く同じクエリーなら、クエリープラン諸々がキャッシュされていると思われ。
(そうでなくても、色々なオブジェクトがキャッシュされるし)
実行時間を見るのなら、SQL Server Profilerが妥当と思う。
サーバー、もしくはクライアントでSQL Server Profileを起動しておいて、
[ファイル]-[新しいトレース]で、とりあえず使用するテンプレートは標準を選択。
クエリーの実行時間はDurationという列を参照。
832:NAME IS NULL
08/11/20 23:23:47
デバッグ中で、データの追加削除を繰り返してたので、ログが膨れ上がっています。
本番前にいったん、すべてクリアしたいと思うのですが、データベース作成直後の
クリーンな状態にするにはどうしたらいいのでしょうか?
833:NAME IS NULL
08/11/20 23:27:11
>>832
クリーンな状態ってログだけ?
だったら>>827を実行。
834:NAME IS NULL
08/11/21 10:17:27 wKzxvEHB
SQL SERVER 2005 で
C#のプログラムからトランザクションをかけてデータを更新したいと思っています。
その時、出来ればトリガが動くような構造にしたいのですが、
そのトリガは出来ればC#からトランザクションをかけてその中で動作してほしいのですがそういうことって出来ますか?
要はSQLを投げたときにトリガは動いてほしいけどロールバックした時にはそのトリガの動作は元に戻したいという都合のいい要件なのですが・・・・
835:NAME IS NULL
08/11/21 10:29:26
トリガは使わないほうがいいね
836:NAME IS NULL
08/11/21 10:45:31
>>835
ありがとうございます。
なるほど
トリガは使わずに手動でやった方がよさそうですか・・・・
それともうひとつ疑問というか、使い方がわからないので教えてほしいのですが
データの楽観的更新を行うのに今まで timestamp の列を使用していました。
このヘルプを読んでいると timestampはrowversionのシノニムであることが記述されているのですが
sql server2005のtimestamp列は行ごとに必ず一意になるものと考えていいのでしょうか?
(いわゆる 行単位でデータを持ちそれが自動でインクリメントされる)
実は今までtatimestamp列はテーブル内で一意になり 8byteの枠を超えた行数のテーブルは一意にならないのではないかと思っていたのですが・・・・
837:NAME IS NULL
08/11/21 10:52:35
いや信じるなよw
838:NAME IS NULL
08/11/21 10:57:11
>>837
え~と・・・つられた?w
まぁ、この動作が出来ないのならトリガはあきらめてPGからトランザクション内でチョイチョイとしようとは思うのですがいろいろPG内のチェック等が面倒くさくて出来ればトリガに任せたいのです
SQL投げる回数も増えますし
ストアド内から1トランザクション内でロールバックできるように処理できればそちらでもいいのですが・・・・
839:NAME IS NULL
08/11/21 22:43:21
>>831
ありがと。
840:NAME IS NULL
08/11/22 16:29:45
>>838
普通はトランザクションを開始しても、
トリガは動くし、当然、トリガの内容も含めてロールバックされると思うんだけど。
どんな手順で処理してる?
あと、timestamp の値は、timestamp 列のあるテーブルに Insert, Update される度にカウントされる、
データベースのカウンタ。データベース毎に一つで、列とかテーブル単位のカウンタじゃないよ。
841:NAME IS NULL
08/11/27 18:16:48
VB Express 2008を入れたところSQL2008EXがインストールされました。
これですとマネジメントスタジオが備わっていないので、
マネジメントスタジオがあるアドバンスを入れたところ
SqlServerConfigurationManagerに二つのサービスが出るようになってしまいました。
片方を削除したいのですが、どうすればよいでしょうか?
当然のことながら「サーバーへの接続」のサーバー名には"私のPC名¥express"と"私のPC名¥express0"の
二つがプルダウンに出てきてしまいます。
アドベンチャーワークスのサンプルを入れるときも上記サーバー名のどちらに入れるか聞かれます。
842:NAME IS NULL
08/11/27 18:51:50
自己解決しました。
普通にアプリケーションのインストールから削除操作を行えばできました。
片方を生かして削除ができました。
843:NAME IS NULL
08/11/28 18:31:03
解決しててよかった。