データベース管理者

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

4
重複する候補キーとは正確には何ですか?
簡単に説明できる人がいoverlapping candidate keyますか?何でoverlapping名前が示すように? 以下の関係を検討してください R(L,M,N,O,P) { M -> O NO -> P P -> L L -> MN } 上記の機能の依存関係のどれが上記の関係で重複する候補キーをもたらしていますか? ディスカッションを依存関係に制限しましょう。現時点ではBCNFには興味がありません。

1
SQL Serverからタイムゾーンキー名を取得する最良の方法
以下は私がつなぎ合わせたものですが、他に利用できる方法があるかどうかを確認したいと思いました。 SET NOCOUNT ON; GO DECLARE @tz VARCHAR(50) EXEC [master].[dbo].[xp_regread] 'HKEY_LOCAL_MACHINE' ,'SYSTEM\CurrentControlSet\Control\TimeZoneInformation' ,'TimeZoneKeyName' ,@tz OUT; SELECT GETDATE() ,'(' + LEFT(PARSENAME(REPLACE(@tz, ' ','.'),3),1) + '' + LEFT(PARSENAME(REPLACE(@tz, ' ','.'),2),1) + '' + LEFT(PARSENAME(REPLACE(@tz, ' ','.'),1),1) +')' 出力:2014-10-14 16:22:21.037(CST)

1
CTEが失われた更新を受け入れるのはなぜですか?
クレイグリンガーがコメントしたときの意味がわかりません。 挿入トランザクションがロールバックすると、このソリューションは更新が失われる可能性があります。UPDATEが行に影響を与えたことを確認するチェックはありません。 上https://stackoverflow.com/a/8702291/14731。失われた更新がどのように発生するかを示すイベントのサンプルシーケンスを提供してください(例:スレッド1がX、スレッド2がY)。

1
単一のクエリですべての孤立レコードを取得するにはどうすればよいですか?
主キーを参照しない孤立したレコード(外部キー)を持つテーブルがいくつかあることに気づきました。テーブルにクエリを実行して、そのようなすべての行のリストを取得するにはどうすればよいですか?これらの親レコードが削除されたとき、またはこれをどのように処理しますか? 私はSQL Server 2008 R2を使用しており、クリーンアップ後に3つの類似したデータベースを1つにインポートしようとしています。アドバイスしてください。 サンプルの子テーブル(DocumentDistribution)と親テーブル(DocumentSource)のスクリプトを作成しました。 ALTER TABLE [dbo].[DocumentDistribution] WITH NOCHECK ADD CONSTRAINT [fk_documentdistsourceid_documentsourceid] FOREIGN KEY([DocumentDistSourceID]) REFERENCES [dbo].[DocumentSource] ([DocumentSourceID]) GO ALTER TABLE [dbo].[DocumentDistribution] CHECK CONSTRAINT [fk_documentdistsourceid_documentsourceid] テーブルが関係にあり、外部キー制約が明示的に定義されていることを教えてくれませんか?

2
SQL Server 2014 Standard Edition Trialをフルコアライセンスにアップグレードできますか?
SQL Server 2014 Standard Trialエディションのコピーをインストールすると、そのバージョンを(完全に再インストールせずに)フルバージョン(コアライセンス)にアップグレードできますか?ライセンスを待つ間、このようなものをインストールして構成したいのですが、簡単にライセンスを取得できない場合に自分を悲しませたくありません。 編集:この質問を見つけた人のための詳細情報- Microsoftサイトでは、評価版をダウンロードするときに「SQL Server 2014」以外の何も指定していません。しかし、彼らはあなたに特定の版を選ばせないので、シャンキーのコメントは正しいと思います(それはエンタープライズ版です)。 Thomasが私に指摘したように、SQL Server 2014 Evaluation Enterpriseからのアップグレードパスは次のとおりです(Microsoftはリンクの移動/削除が大好きなため)。 SQL Server 2014評価エンタープライズ2 SQL Server 2014 Enterprise(サーバー+ CALまたはコアライセンス) SQL Server 2014ビジネスインテリジェンス SQL Server 2014 Standard SQL Server 2014開発者SQL Server 2014 Evaluation Enterprise(無料版)から有料版へのWebアップグレードは、スタンドアロンインストールではサポートされていますが、クラスター化されたインストールではサポートされていません。

1
複数の親を持つ有向グラフを表す方法は?
http://dirtsimple.org/2010/11/simplest-way-to-do-tree-based-queries.htmlは、クロージャーテーブルの挿入と削除のアルゴリズムを提供します。 ノードに複数の親がある場合を除いて、同様のデータ構造をモデル化したいと思います。 与えられた: 削除する[B, C]と、次のようになると予想します。 ノードを削除すると、次のようになりますB。 ただし、リンクまたはノードを削除するために作成者のアルゴリズムを使用すると、[D, C, 1]削除のタグが付けられることに気付くでしょう。これは望ましくありません。 これまでに試したこと references2つのノード間を移動する方法がいくつあるかを示す列を追加することにより、元のデータ構造を適応させてみました。上記の例では、からAまでC、Bまたはを経由して移動できますD。B削除されると、AtoへのパスCが保持され、参照カウントが2から1に減少すると考えられていました。理論的には良かったのですが、実装を機能させる方法を理解できなかったので、それはまったく可能です(データ構造には、削除する行を特定するのに十分な情報が含まれていない可能性があります)。 私が求めていること 複数の親をサポートするために、クロージャテーブルをどのように調整しますか?どの代替データ構造をお勧めしますか?https://stackoverflow.com/q/4048151/14731には、そのようなデータ構造の説得力のあるリストが含まれていますが、複数の親をサポートしている(または最適な)構造は明確ではありません。

3
メッセージの取得を続行:ページの割り当てに失敗:FAIL_PAGE_ALLOCATION 540
私は次のことでいくつかの助けをいただければ幸いです、私はいくつかグーグルをやったが、これを解決することができませんでした。 SQLログ「失敗した割り当てページ:FAIL_PAGE_ALLOCATION 540」でメッセージを受け取り続け、この質問の最後に追加するダンプが続きます。 参考までに、ビルドは次のとおりです。 vCenterで実行されている仮想サーバー Windows Server 2008 R2 64ビットSQL Server 2012 SP1 Enterprise(11.0.2100)8GB RAM SQL Server Max and Min memory is set to 6144 MB サーバーは2ノードの可用性グループの一部であり、これが現在のプライマリノードです。 このインスタンスはMicrosoft SharePointのデータベースをホストしています 私は、Perfmonトレースを24時間実行しましたが、ダンプの1つの後にPLEがドロップし、その後再び上昇したことがわかりました。他に特に奇妙なものはありません。 SQL Serverはまだ実行中です。 SQLログからの抽出: 10/03/2014 09:59:52,spid866,Unknown,CACHESTORE_XMLDBELEMENT (node 0) KB<nl/>---------------------------------------- ----------<nl/>VM Reserved 0<nl/>VM Committed 0<nl/>Locked Pages Allocated 0<nl/>SM Reserved 0<nl/>SM Committed 0<nl/>Pages …

2
SQL Server 2008で10秒未満のジョブをスケジュールする方法
3秒ごとにジョブを実行したいのですが、SQL Server 2008では10秒未満の間隔を定義できません。 このジョブは、訪問者情報とセグメンテーション情報を、Google検索で追跡されるデータベースに挿入/更新するために使用されます。 2〜3秒で最大約100行が挿入されます。そのジョブは、データベースにテーブルを挿入して更新します。spジョブスケジューリング構成を使用してスケジュールする方法はありますか?


2
なぜVACUUM ANALYZEはすべての死んだタプルをクリアしないのですか?
VACUUM ANALYZE VERBOSE大きなテーブルに大きなDELETE/INSERT変更を加えた後、いくつかの大きなテーブルで「手動」を実行します。これは問題なく機能しているように見えますが、テーブルのVACUUMジョブが数時間実行されることがあります(同様の問題と理由については、この投稿を参照してください)。 さらに調査を行ったところ、実行後でも、多数のデッドタプルを持つ大きなテーブルがあることがわかりましたVACUUM。たとえば、このレスポンスのクエリから生成された統計の一部を次に示します。 -[ RECORD 50 ]--+--------------------------- relname | example_a last_vacuum | 2014-09-23 01:43 last_autovacuum | 2014-08-01 01:19 n_tup | 199,169,568 dead_tup | 111,048,906 av_threshold | 39,833,964 expect_av | * -[ RECORD 51 ]--+--------------------------- relname | example_b last_vacuum | 2014-09-23 01:48 last_autovacuum | 2014-08-30 12:40 n_tup | 216,596,624 dead_tup …


3
特定数以上の行を挿入すると、INSERTに5時間以上かかる
テーブルに約1,350,000行未満を挿入する場合、すべて約2分かかりますが、挿入される行数が多い場合、データの挿入に必要な時間は約5時間に増加します。 問題はクエリまたはインデックスに関連していません。すべてが長い間正常に動作しており、クエリ、テーブル、またはインデックスの構造には何も変更されていないためです。 約2週間前に初めて問題が発生し、挿入された行の数が+ -1,350,000を超える日にも繰り返し発生します。たとえば、ある日に挿入された行の数は1,200,000であり、プロセスに2分かかり、他の日に行の数は1,450,000であり、データの挿入に5〜6時間かかります。 インデックスを再構築しようとしましたが、役に立ちませんでした。

2
ファクトテーブルの粒度に関する私の理解は正しいですか?
私と私たちの会社の別のDBAは、ベンダーが開発したデータベース設計のレビューを担当しています。ベンダーは、設計の基礎としてキンボールを使用すると述べています。(注:私はキンボール対インモンなどの議論を探しているわけではありません)彼らは複数の事実と次元を持つマートを設計しました。 公平に言えば、当社は単一のマートを設計したことはありません。私たちは常にコンサルタントにやってもらいました。そして、私たちはクラスや何かに送られたことがありません。したがって、倉庫/マート/次元モデリングなどに関する私たちの知識は、私たちが持っているほとんどの経験、インターネットで見つけることができるもの、および自読に基づいています(私たちはInmonとKimballの本を持っており、それらを通り抜けようとしています) 。 ステージは私の知識レベルに設定されたので、デザインの課題に向かいます。 「請求損失統計」と呼ばれるファクトテーブルがあります(これは保険用です)。そして、彼らは請求の支払い(毎月のレベルまでロールアップ)と準備金(請求の銀行口座のようなもの)の両方をキャプチャしようとしています。彼らは、毎月の支払い額を確認したいと考えています(重要ではありません)。しかし、彼らは準備金の口座の現在の残高を見たいと思っています。 絵の例をあげます。 クレームの準備金として1000米ドルを設定したとしましょう。これは脇に置かれます(そのため、いくつかの点で銀行口座のように機能します) 2014年10月には、まだ何も支払いません。したがって、企業は10月末の支払いと準備残高を確認したいと考えています。 ----------------------------------------------- - MONTH_YEAR - PAYMENTS - RESERVE_BALANCE - ----------------------------------------------- - 102014 - 0.00 - 1000.00 - ----------------------------------------------- その後、11月がやってきます。100ドル、150ドル、75ドルの支払いを行います。彼らは、以下のように、それらの合計額と残高の準備金を確認したいと考えています。 ----------------------------------------------- - MONTH_YEAR - PAYMENTS - RESERVE_BALANCE - ----------------------------------------------- - 102014 - 0.00 - 1000.00 - ----------------------------------------------- - 112014 - 325.00 - 675.00 - …

2
Unicodeを非Unicodeに変換するときの自動変換/ NVARCHARからVARCHAR
Unicodeコードポイント9619は「ダークシェード」と呼ばれる文字です:▓(http://unicode-table.com/en/search/?q=9619)。 SQL_Latin1_General_CP1_CI_AS照合と1252コードページを使用すると?、コードページ1252にこの文字が含まれていないように見え、これがSQL Serverのように見えるため、そのUnicode文字を非Unicodeデータ型にキャスト/変換すると疑問符()が発生することが予想されます。変換できない場合の動作。 したがって、私の質問は、SQL Serverがこの文字を「パイプ、壊れた垂直バー」であるASCIIコード166に変換するのはなぜ¦ですか。 SELECT NCHAR(9619), CAST(NCHAR(9619) AS CHAR(1)), ASCII(CAST(NCHAR(9619) AS CHAR(1)))

4
接続ごとの一時的なスキーマ?
単体テストをH2からPostgresqlに移行しようとしています。 現在、H2は、各接続が一意のスキーマにマップされ、テーブルが作成され、テストが実行され、スキーマが削除されるように、メモリ内スキーマを提供します。スキーマの作成と破棄は、H2によって自動的に処理されます。 単体テストは同時に実行されます。 Postgresqlでこれを行う最良の方法は何ですか?具体的には 接続ごとに一意のスキーマを取得するにはどうすればよいですか? テストフレームワークは一意の名前を生成する必要がありますか、またはこれを行うための組み込みメカニズムはありますか? 接続がドロップされたときにスキーマが確実にドロップされるようにするにはどうすればよいですか? 単体テストが終了したときにスキーマがぶら下がってしまいたくありません。 どのようなアプローチで最高のパフォーマンスが得られますか? 1秒あたり数十のスキーマを作成/ドロップする必要があります。 更新:ここで関連する回答を見つけましたが、単体テストを実行しているプロセスが強制終了された場合にスキーマを削除できません。

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