タグ付けされた質問 「sql-server-2008」

SQL Server 2008(メジャービルドバージョン10.00.xxxx)。また、sql-serverでタグ付けしてください。

3
Management Studio T-SQLクエリで接続を指定する
ユーザーをロールとしてDBサーバーに追加する場合、GUIから「このアクションのスクリプトを作成する」機能をよく使用します。次に、「接続::接続の変更」に移動して、他のサーバーでも同じことを行います。 スクリプトアクションで接続を指定できる方法はあるので、2番目の接続の変更手順を実行する必要はありませんか?

1
ミラーの解除と復元
ミラーのセカンダリノードでメンテナンスを行う必要があります。これは、ネットワークが短時間停止した後にミラーが再確立されている間にサイトが遅くなった結果です。安全のためにミラーを無効にし、問題のサーバーで突っ込んだ後で再度有効にします。 私が今持っている計画は: ミラーを無効にする 潜在的に危険なトラブルシューティングを行う 失われたトランザクションログをすべて復元する ミラーを再確立します これは、ミラーを解除/再確立するための最も安全な方法ですか?気を付けるべき落とし穴はありますか?

1
SQL ServerのトリガーをOracleの書き込みトリガーに書き換えるにはどうすればよいですか?
元々Oracle用に作成されたトリガーをSQL Server用に書き換える方法を教えてください。 これが私のOracleトリガーコードです: CREATE OR REPLACE TRIGGER P000KUL_TEST BEFORE INSERT ON P000KUL REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN SELECT TO_CHAR(SYSDATE, 'dd/mm/RRRR') INTO :NEW.SYSTEM_DATE FROM DUAL; SELECT TO_CHAR(SYSDATE, 'hh:mi') INTO :NEW.SYSTEM_TIME FROM DUAL; END;


2
データベースがオフラインになったのはいつですか
いくつかのSQLデータベースがいつオフラインになったかを知る方法を見つけようとしています。 ログを確認しましたが、そのような情報は見つかりませんでした。さらに、デフォルトのトレースが有効になっていません。 以前はオフラインでDBAがいましたが、電子メールや書面によるコミュニケーションはなかったという情報があります。 これに関する情報を見つけることができますか? 提案してください、ありがとう!

2
TempDBは縮小しません。未処理のトランザクションはありません
SQL 2008でTempDBが非常に大きくなり(> 40GB)、それを縮小したいのですが。私は、Management Studioを介してdbccの縮小データベース、dbccの縮小ファイル、および縮小コマンドを使用しました。 次のエラーが発生します。 ページ1:4573184は作業テーブルページであるため移動できませんでした。 DBCC FREEPROCCACHEを実行し、縮小ルーチンの1つを再実行することで、危険を回避するためにいくつかの領域を再利用できましたが、明らかにこれは理想的ではなく、たぶん少し時間を費やすだけです。 私はDBCC OpenTranを実行しましたが、そこには何もぶらさがっていません。 私がインターネット上で読んだところはどこでもSQL Serverのリサイクルに行き着きます...確かにより良い方法が必要です...誰か? おかげで、 トム

3
ロックが使用するメモリ
ちょっと不思議ですが、データベースのRAMサイズが128 GBのSQL 2012 Enterpriseエディションの1つは370 GBであり、ロック(OBJECTSTORE_LOCK_Manager)のメモリクラークが使用するメモリの量は7466016 KBを示します。パフォーマンスカウンターを見ても確認できますselect * from sys.dm_os_performance_counters where counter_name = 'Lock Memory (KB)' ただし、クエリを実行すると select count(*) from sys.dm_tran_locks 16個のロックのみが表示されます。つまり、7 GBを超えるロックを使用しているものです。調べる方法はありますか? いったんロック用のメモリが割り当てられたら、SQLはまだそれを割り当て解除していないのですか?過去1時間で、ロックカウントが500を超えていないようですが、ロックメモリは同じままです。 最大サーバーメモリは106 GBです。メモリ内でロックページを使用していないため、過去12時間のメモリログにエラーが発生したり、メモリ不足が発生したりすることはありません。Available MBytesカウンタは、15 GBを超える使用可能なメモリを示しています。 アクティビティモニターは常に待機中のタスクを0と表示するため、明らかにブロックされません。 SQLサーバーのロックには約100バイトのメモリが必要であることを考慮すると、7 GBは大量のメモリであり、誰がそれを使用しているかを調べようとします。 ロックカウントでサーバーダッシュボードレポートのトップトランザクションを実行すると、「現在、システム上でロックトランザクションは実行されていません。ただし、ロックメモリは上記のように表示されます。DBは夜間に最もビジーです。

1
コミットされた読み取りスナップショット分離(RCSI)で取得された共有ロック
LCK_M_SRCSIを使用すると、共有ロックの待機()が発生します。私の理解では、SELECTsRCSIを使用するときに共有ロックを必要としないため、これは発生しないはずです。 共有ロックを確認するにはどうすればよいですか?外部キーが原因ですか?

2
nullまたは空のテーブル値パラメーターを確認するにはどうすればよいですか?
ストアドプロシージャ(SS2k8)があり、テーブル値パラメーターがいくつかあり、それらがnullまたは空になる場合があります。このStackOverflowの投稿を見たところ、null /空のTVPは呼び出しパラメーターリストから単に削除する必要があると述べています。私の問題は、「IF(@tvp IS NULL)」がプロシージャの作成に失敗し、「スカラー変数「@tvpを宣言する必要があります」というメッセージが表示されるため、ストアドプロシージャ内の空またはnullを確認する方法を理解できないことです。TVPでSELECT COUNT(*)を実行してゼロを確認する必要がありますか? コードの抜粋: CREATE PROCEDURE [foo] (@tvp [TvpType] READONLY) AS IF (@tvp IS NOT NULL) -- doesn't work BEGIN -- lots of expensive processing END ELSE BEGIN -- a little bit of cheap processing END ...

1
結合された仮想テーブルのNEWID()により、意図しないクロス適用動作が発生する
私の実際の作業クエリは内部結合でしたが、クロス結合を使用したこの単純な例では、ほとんど常に問題が再現されているようです。 SELECT * FROM ( SELECT 1 UNION ALL SELECT 2 ) AA ( A ) CROSS JOIN ( SELECT NEWID() TEST_ID ) BB ( B ) 私の内部結合では、NEWID()関数を使用して各行にGUIDを追加した多くの行があり、そのような行の約9に対して、2行の仮想テーブルとの乗算により期待される結果が生成されました。同じGUID。10のうち1つは異なる結果を生成します。これは控えめに言っても予想外であり、テストデータ生成スクリプトでこのバグを見つけるのに本当に苦労しました。 非決定的なgetdate関数とsysdatetime関数を使用して次のクエリを見ると、これは表示されません。私はとにかく、両方の最終結果行に常に同じdatetime値を表示しています。 SELECT * FROM ( SELECT 1 UNION ALL SELECT 2 ) AA ( A ) CROSS JOIN ( SELECT GETDATE() TEST_ID …

3
孤立した## MS_PolicyEventProcessingLogin ##の原因は何ですか?
今朝、SQLログが次のメッセージでいっぱいになっていることに気付きました。 アクティブにprocの「[dboは] [sp_syspolicy_events_reader]。」は次のキュー「msdb.dbo.syspolicy_event_queue」出力で実行されている: 「校長『## MS_PolicyEventProcessingLogin ##』、このタイプの存在しないため、データベースプリンシパルとして実行できませんプリンシパルを偽装することはできません、またはあなたには許可がありません。 以下を実行するEXEC sp_change_users_login 'report'と、ログインが実際に孤立していることがわかりました。 このMSDNの投稿で推奨されているように、以下を実行することで修正できました。 EXEC sp_change_users_login 'Auto_Fix', '##MS_PolicyEventProcessingLogin##', NULL, 'fakepassword' しかし、問題は残っています:このプリンシパルがそもそも孤児になった原因は何でしょうか?グーグルで調べて調べたところ、他の人がこの問題を抱えていることがわかりましたが、原因の説明はまだわかりません。エラーが発生し始めた瞬間、私が気づいていることは何も起こりませんでした。 昨年の夏にサーバー全体をSANストレージモデルに移動しました。その移動中にすべて(msdbを含む)を復元しましたが、それは数か月前でした。数週間前よりも早くログに表示されないため、症状が現れたのは最近のことでした。

3
いつインデックスを削除して再作成する必要がありますか?
最初は1 TBで、毎月約20ギガバイト成長するデータウェアハウスを構築しています。 特定のテーブルについては、毎日ETLプロセスを行っており、他のテーブルについては毎週/毎月行っています。 テーブルへのデータインポートがある場合、インデックスを削除して再作成する必要がありますか? インデックスを削除して再作成するポイントはありますか、それとも自動的に更新されますか? 統計は自動的に更新されるように設定されています。 あなたの助けと指導を本当にありがとう。 私はこの天才的なスクリプトを得ました: SELECT 'ALTER INDEX [' + ix.name + '] ON [' + s.name + '].[' + t.name + '] ' + CASE WHEN ps.avg_fragmentation_in_percent > 40 THEN 'REBUILD' ELSE 'REORGANIZE' END + CASE WHEN pc.partition_count > 1 THEN ' PARTITION = ' + …


2
大規模なSQL Serverデータベースのバックアップ中にデータ更新操作を実行する
大規模な(数千万レコードの)データベースがあり、データベースの完全バックアップを実行します。 ただし、データベースは十分に大きいため、バックアップの実行前および実行中にトランザクションを開始できるだけでなく、バ​​ックアップの実行中および実行後にコミットすることもできます。 例えば: T0 = Transaction A start T1 = Full database backup start T2 = Transaction B start (will not deadlock with A) T3 = Transaction A commit/rollback (does not matter, does it?) T4 = Full database backup end T5 = Transaction B commit/rollback (again, does not matter, does …

1
ビューに新しい列を作成し、データ型を割り当てます
これが私のクエリです: CREATE VIEW VIEW2 AS SELECT [Column1], (NULL) AS column2 VARCHAR(10) FROM VIEW1; 3行目にエラーが表示されます。 Column2のデータ型を指定せずにこのようなクエリを残すと、クエリは機能しますが、デフォルトのデータ型はintになりますが、VARCHARが必要です。 CREATE VIEW VIEW2 AS SELECT [Column1], (NULL) AS column2 FROM VIEW1; 手伝ってくれませんか?ありがとうございました! 注:VIEW1にはColumn1のみが含まれています。Column2はVIEW1にはなく、NULL値を持つ生成された列です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.