データベース管理者

データベースのスキルを向上させ、コミュニティの他の人から学びたいデータベースの専門家向けのQ&A

1
バックアップファイルにCDCが含まれているかどうかを確認するにはどうすればよいですか?
SQL Server 2008から2014までを使用して、Change Data Capture(CDC)を有効にしてデータベースをバックアップおよび復元する方法を知っていますが、私が探しているのは、フルバックアップファイルをクエリして、CDCデータが含まれているかどうかを確認する方法です。 以下のような方法だろう、何が素晴らしいことだRESTORE FILELISTONLYデータベースからファイルリストを取得しますが、代わりに、リストアがKEEP_CDCフラグを使用する必要がありますかどうかを判断するためにCDCの状態を取得していますか? バックアップにCDCデータが含まれているかどうかを確認する方法はありますか? ありがとう!

3
インデックスをパーティションに配置しないことには利点がありますか?
大規模なパーティションOLAPテーブルを管理する特権があります。この表を確認したところ、インデックスの1つがパーティションスキームと一致していないことに気付きました。著者が利用できず、注意深く作成されたGoogle検索で有用な結果が返されなかったため、これが意図的なものか偶発的なものかはわかりません。 SQL Server 2008でインデックスをパーティションアラインしない理由はありますか?

3
MS SQL Serverを入手してディスク容量を解放する
不十分に管理されたデータベーステーブルは巨大なものに成長しました。孤児のレコードの48+ギグ。私はそれをクリーンアップして、危険なほどにいっぱいになったハードドライブを通常の状態に戻そうとしています。このテーブルから約4億個のレコードを削除します。これは、私が入力しているときに実行されています。ハードドライブ領域の低下は見られませんが、システムテーブルクエリでメモリの低下が見られます。テーブルサイズを取得するために実行しています。データベースは「単純復旧モデル」を使用しています。 これに類似した多くの質問があり、データベースを縮小する必要があると回答しています。しかし、彼らは断片化されたデータなどのためにこれがどのように悪い/怖いのかを説明し続けます データベースはこのサイズであってはならないので。それを縮小するのはまだ悪いですか? これは本番データベースです。縮小すると、ダウンタイムが発生したり、データベースがロックされたりしますか? SQL Server Management Studioには、縮小、データベース、またはファイルの2つのオプションがあります。私の状況を考えると、最良の選択肢は何でしょうか? DBに必要な空き領域の割合に関するルールはありますか? 縮小のタグの説明を読んでも、私はそれをしたくありません。別の方法はありますか?

5
2つのSQLステートメントの数学的等価性
2つのSQLステートメントの数学的等価性を確認する方法はありますか? 2つのSQLステートメントがあります。 SQL_STATEMENT_1 SQL_STATEMENT_2 データに対して両方のステートメントを実行し、出力を比較してもまったく役に立ちません。 方程式ソルバーが行うように、ステートメントの背後にあるセット数学を評価する必要があります。 私の質問の範囲外のものは次のようなものです: 等しいかどうかの比較(より大きい、より小さい、LIKEなど) ストアドプロシージャ、またはトリガー 共通テーブル式(WITH) スコープ内: 副選択:WHERE other_id IN(SELECT id FROM other WHERE ...) 結合

2
1つのSELECTステートメントで複数の範囲のカウントを返す
fooとりわけ、score0から10の範囲の列を持つPostgresデータベーステーブルがあります。クエリで、スコアの合計数、0から3までのスコアの数、4の間のスコアの数を返します。 6、7から10までのスコアの数。次のようなもの: SELECT COUNT(*) as total, COUNT( SELECT * from foo where score between 0 and 3; ) as low, COUNT( SELECT * from foo where score between 4 and 6; ) as mid, COUNT( SELECT * from foo where score between 7 and 10; ) as high FROM foo; …

1
完全なブロッキングpostgresクエリを表示する方法は?
このページのステートメントを使用して、Postgresでクエリのブロックを表示しています SELECT bl.pid AS blocked_pid, a.usename AS blocked_user, ka.query AS blocking_statement, now() - ka.query_start AS blocking_duration, kl.pid AS blocking_pid, ka.usename AS blocking_user, a.query AS blocked_statement, now() - a.query_start AS blocked_duration FROM pg_catalog.pg_locks bl JOIN pg_catalog.pg_stat_activity a ON a.pid = bl.pid JOIN pg_catalog.pg_locks kl ON kl.transactionid = bl.transactionid AND kl.pid != …

5
以前の行の値と実際の行の値に基づいて行の値を計算します
みなさん、こんにちは。あなたの助けに感謝します。 私は次のような状況にあります。フィールドid(int)、stmnt_date(date)、debit(double)、credit(double)およびbalance(double) を含むステートメントと呼ばれるテーブル 次のルールに従って残高を計算したい: 最初の行の残高(発生順)=借方-貸方および残りの行 現在の行の残高=発生順に前の行の残高+現在の行の借方-現在の行の貸方 上の図からわかるように、行は日付順に並べられていません。そのため、この単語を時系列で2回使用して、stmnt_date値の重要性を強調しています。 手伝ってくれてありがとうございます。
9 mysql  row 

1
復元できません(エラー3456)
簡単に理解できない状況があり、このフォーラムで他の人に提案があるかどうか尋ねたいと思いました。 Windows Server 2008R2 EnterpriseでSQL Server 2008 R2 Standard SP3を実行しています。 データベースにはいくつかのメンテナンスが必要でしたが、その後、別のサーバーに復元する必要がありました。COPY_ONLYで実行される完全なdbバックアップと、4つのtlogバックアップのセットがあります。 開始する前に、tlogbackup1を作成します 以下からの変更FULLへのBULK_LOGGED復旧モデル 新しいファイルグループを追加する newfilegroupにファイルを追加する newfilegroupをデフォルトに設定 テーブルに選択(newfilegroup) 元のテーブルをドロップ 元のファイルを削除 元のファイルグループを削除する 新しいテーブルの名前を元のテーブルと一致するように変更する 元のファイルグループと一致するようにnewfilegroupのファイル名を変更する 元のファイル名と一致するようにカタログのファイル名を変更する OSレベルでファイル名を変更して元のファイル名と一致させる 既定のファイルグループを元のファイルグループに設定する dbをオンラインにする 以下からの変更BULK_LOGGEDへのFULL復旧モデル すべての手順が完了したら、tlogbackup2を作成します 復元サーバーでのドライブ文字の変更により、すべてのバックアップの復元にはWITH MOVEを使用する必要があります。 回復手順: RESTORE database SomeDB FROM DISK = 'D:\REPRO\SomeDB.bak' WITH MOVE 'SystemData' TO 'D:\SQLDATA\SomeDB.mdf' ,MOVE 'SystemDataPDS' TO 'D:\SqlData\SomeDB.ndf' ,MOVE 'SystemData_log' TO …

2
Postgresに何千人ものユーザーを抱えることは可能ですか?
最大50.000の顧客を持つSAASを作成しています。Postgresデータベースに顧客ごとにユーザーを作成することを検討しています。サービスにログインする各ユーザーをデータベース内のユーザーにマップして、ユーザーが自分のデータにのみアクセスできることを確認します。また、トリガーを利用するこのソリューションによって、監査証跡をデータベースに直接実装したいと考えています。各顧客に独自のデータベースユーザーがいる場合、2人の顧客が同じデータを共有する場合でも、誰が何をしたかを簡単に確認できます。 データベースに50.000人のユーザーがいるため、予期しない問題が発生しますか?パフォーマンス面または管理面。たぶん接続プーリングはもっと難しいでしょうが、私はそれが必要になるかどうか本当に知りません。

2
Page Life Expectancyはインスタンスについて何と言っていますか?
環境内のいくつかのSQL Serverインスタンスに監視ソフトウェアをインストールしました。ボトルネックを見つけて、パフォーマンスの問題をいくつか修正しようとしています。一部のサーバーでより多くのメモリが必要かどうかを確認したい。 1つのカウンター、ページの平均余命に興味があります。それはすべてのマシンで異なって見えます。一部のインスタンスで頻繁に変更されるのはなぜですか?それはどういう意味ですか? いくつかの異なるマシンで収集された先週のデータを見てください。各インスタンスについて何が言えますか? 頻繁に使用される本番インスタンス(1): 適度に使用されている実稼働インスタンス(2) まれに使用されるテストインスタンス(3) 頻繁に使用される本番インスタンス(4) 中程度に使用されたテストインスタンス(5) 頻繁に使用されるデータウェアハウス(6) 編集:これらのすべてのサーバーに対してSELECT @@ VERSIONの出力を追加します: Instance 1: Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) Jun 17 2011 00:54:03 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor) Instance 2: Microsoft SQL …

1
xmlパラメータを使用して複数のデータをアップサートするときにマージクエリの使用を回避する方法
値の配列でテーブルを更新しようとしています。配列の各項目には、SQL Serverデータベースのテーブルの行と一致する情報が含まれています。行がテーブルに既に存在する場合、その行を指定された配列の情報で更新します。それ以外の場合は、テーブルに新しい行を挿入します。基本的にアップサートについて説明しました。 現在、私はこれを、XMLパラメーターを受け取るストアード・プロシージャーで実現しようとしています。テーブル値パラメーターではなくXMLを使用する理由は、後者の場合、SQLでカスタムタイプを作成し、このタイプをストアドプロシージャに関連付ける必要があるためです。将来、ストアドプロシージャまたはdbスキーマの何かを変更した場合、ストアドプロシージャとカスタムタイプの両方をやり直す必要があります。このような状況は避けたいです。さらに、データ配列のサイズが1000を超えることはないため、TVPがXMLよりも優れていることは、私の状況では役に立ちません。これは、ここで提案されているソリューションを使用できないことを意味します。SQLServer 2008でXMLを使用して複数のレコードを挿入する方法 また、ここでの同様のディスカッション(UPSERT-MERGEまたは@@ rowcountのより良い代替案はありますか?)は、テーブルに複数の行をアップサートしようとしているため、私が求めているものとは異なります。 次の一連のクエリを使用して、xmlから値を更新することを望んでいました。しかし、これはうまくいきません。このアプローチは、入力が単一の行である場合にのみ機能すると想定されています。 begin tran update table with (serializable) set select * from xml_param where key = @key if @@rowcount = 0 begin insert table (key, ...) values (@key,..) end commit tran 次の代替方法は、完全なIF EXISTSまたは次の形式のバリエーションの1つを使用することです。しかし、私は次善の効率であることを理由にこれを拒否します: IF (SELECT COUNT ... ) > 0 UPDATE ELSE INSERT 次のオプションは、http://www.databasejournal.com/features/mssql/using-the-merge-statement-to-perform-an-upsert.htmlで説明されているようにMergeステートメントを使用することでした。しかし、それから私はここでマージクエリの問題について読みました:http : …

2
単純なDELETEですが、複雑な実行プラン
この削除を実行すると: DELETE FROM ETLHeaders WHERE ETLHeaderID < 32465870 ... 39,157行を削除します。これは、クラスター化インデックスと主キーであるETLHeaderIDを削除しているため、単純なはずです。しかし、(実行計画によると)361,190行に達し、他のインデックスを使用しているようです。テーブルには、XMLデータ型のフィールドがあります(このDELETEに影響する場合)。 なぜ、どのように私はこのDELETEを高速化できるのでしょうか? 実行計画はこちら:http : //sharetext.org/qwDY テーブルスキーマはこちら:http : //sharetext.org/Vl9j ありがとう

1
フェールオーバークラスターがない環境でのWindows Update後のAlwaysOn可用性グループエラー
SQL Serverサービスが今朝停止しており、一部のWebサイトが停止しました。Windowsイベントビューアを確認したところ、次のエラーが発生しました。 アップグレードステップ 'SSIS_hotfix_install.sql'でエラー942、状態4、重大度25が発生したため、データベース 'master'のスクリプトレベルのアップグレードに失敗しました マスターデータベースを回復できません。SQL Serverを実行できません。完全バックアップからマスターを復元、修復、または再構築します。masterデータベースを再構築する方法の詳細については、SQL Server Books Onlineを参照してください。 私が最初に行ったのは、Googleにエラーを報告することでした。私は最終的に正確な問題とその修正を含むフォーラムエントリを見つけました(私が解決策を探しているブログエントリでも)。この問題はAlwaysOn可用性グループと関係があり、修正には次のことが必要です。 トレースフラグ902でSQL Serverサービスを開始します。 ネットスタートMSSQL $ InstanceName / T902 SQL Server Management Studioを開き、可用性グループに移動して、可用性データベースからSSISDBを削除します 新しいクエリを開き、\ Program Files \ Microsoft SQL Server \ MSSQL11.MSSQL $ InstanceName \ MSSQLの下のインストールフォルダーにあるSSIS_hotfix_install.sqlスクリプトを実行します。 SQL Serverサービスを停止します。 ネットストップMSSQL $ InstanceName SQL Server構成マネージャーからSQL Serverサービスを開始する SSISDBを可用性グループに戻す ただし、「AlwaysOn高可用性」フォルダーを展開しようとすると次のエラーが発生したため、手順2を完了できませんでした。 このインスタンスで可用性グループを作成する前に、サーバーインスタンス 'InstanceName'の「AlwaysOn機能を有効にする必要があります。 次に、指示に従って「SQL Server構成マネージャー」と「AlwaysOn高可用性」タブに移動し、機能をオンにします。今回は機能がグレー表示され、コンピューターノードがフェールオーバークラスター内にないことを示すメッセージが表示されました。 私の質問は: …

1
データベースに対するFirebaseの長所と短所は何ですか?
私は現在、試験から得られたクレジットを追跡するためのサイトを開発しています。また、これらがユーザーの目標クレジットとどのように一致するかを追跡しています。 私は、誰かがNCEA(ニュージーランドの資格システム)で受験できるすべての可能な試験を保存し、試験のユーザーの目標と実際の結果を保存するデータベースシステムを探しています。 データを保存および変更するために、GETおよびPOSTリクエストでFirebase、mySQL、JSONストレージを使用することを検討しました。 このためのデータベースとしてFirebaseを使用する利点と欠点は何ですか?

1
mongodbシャードチャンクの移行500 GBには13日かかります-これは遅いですか、それとも正常ですか?
私はmongodbシャードクラスターを持っていますが、シャードキーはハッシュされています。2つのシャードレプリカセットがあります。各レプリカセットには2つのマシンがあります。 別の2つのシャードレプリカセットを追加して実験を行ったところ、リバランスが開始されました。 ただし、しばらくすると、チャンクの移行がかなり遅くなることがわかりました。1.4GBのデータを移動するのに1時間かかります。 それは私を心配させます、それは私が13日間待って500GBのチャンク移行を完了する必要があることを意味します! 私はこのことについては初心者であり、それが遅い、速い、または通常であるかどうかについての神の感触はありません。しかし、それでも、それらの数は私を納得させません。 実験に関する追加メモ:-m3中型awsマシンを使用-他のプロセスは実行せず、チャンク移行のみ-デフォルト設定のmongodbシャーディングインストールで追加の設定なし-シャードキーはオブジェクトID(_id)でハッシュを使用-最大チャンクサイズ64MB

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