データベース管理者

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

1
PostgreSQLでローカルファイルからリモートDBにコピーするにはどうすればよいですか?[閉まっている]
休業。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善してみませんか?詳細を追加し、この投稿を編集して問題を明確にしてください。 6年前休業。 私はpsqlの初心者で、助けが必要です。ローカルCSVをリモートDBにロードするにはどうすればよいですか? 次のコマンドを使用しています \COPY test(user_id, product_id, value) FROM '/Users/testuser/test.tsv' WITH DELIMITER '\t' CSV HEADER; しかし、これはリモートPCのファイルを検索しますが、ローカルPCで検索する必要があります。

3
SSISはExcelソース文字列をフロートに強制的に変更し続けます
テキストになっているはずのExcelの列がありますが、SSISはそこに数値テキストを認識し、自動的に倍精度浮動小数点数にします[DT_R8]。 出力ブランチの[外部]列と[出力]列で手動で変更できますが、エラー出力では、対応する列を変更できません。 Error at Extract Stations [Excel Source [1]]: The data type for "output "Excel Source Error Output" (10)" cannot be modified in the error "output column "Group No" (29)". Error at Extract Stations [Excel Source [1]]: Failed to set property "DataType" on "output column "Group No" (29)". パッケージのxmlを変更してみました。私が試したIMEX=1し、typeguessrow=0それのどれも私の問題を修正していません。これには修正がありますか?データ型を推測する前に、Excelがデフォルトの8行以上を読み取るようにレジストリを変更することを提案する記事もあります。この方法を使用したくない場合でも、パッケージを実行する予定のマシンでレジストリを変更する必要があるためです。 SQLのnvarcharフィールドにインポートされるExcelフィールドは、たとえば次のようになります。 …

2
「非単一グループグループ関数」が副選択で許可されているが、それ自体では許可されていないのはなぜですか?
最初のクエリが2番目のクエリと同じエラーで失敗しないのはなぜですか。 with w as (select 1 product_id, 10 units from dual union all select 2, 5 from dual) select sum(units) from (select product_id, sum(units) units from w); /* SUM(UNITS) ---------- 15 */ with w as (select 1 product_id, 10 units from dual union all select 2, 5 from dual) select …

2
個々のクエリは10ミリ秒で実行され、UNION ALLでは290ミリ秒以上かかります(7.7MレコードMySQL DB)。最適化するには?
教師が利用できる予定を保存するテーブルがあり、2種類の挿入が可能です。 時間単位:教師ごとに1日あたり無制限のスロットを追加する自由(スロットがオーバーラップしない限り):4月15日、教師は10:00、11:00、12:00、16:00にスロットを持つことができます。特定の教師の時間/スロットを選択すると、担当者が対応します。 時間帯/範囲:4月15日/ 4月に別の教師が10:00から12:00まで、そして14:00から18:00まで働くことができます。人は到着順に提供されるため、教師が10:00から12:00に勤務している場合、この期間に到着するすべての人には到着順に参加します(ローカルキュー)。 検索で利用可能なすべての教師を返す必要があるため、到着範囲の順序と同じテーブルにすべてのスロットを保存する必要があります。この方法では、date_from ASCで注文でき、最初に利用可能なスロットを検索結果の最初に表示します。 現在のテーブル構造 CREATE TABLE `teacher_slots` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `teacher_id` mediumint(8) unsigned NOT NULL, `city_id` smallint(5) unsigned NOT NULL, `subject_id` smallint(5) unsigned NOT NULL, `date_from` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `date_to` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `status` tinyint(4) NOT NULL …
9 mysql 

3
sysjobhistoryへのSQL Server 2012 catalog.executions-それらを結合する方法は?
リソースを使い果たしましたが、ssisdb.catalogテーブルをそれらを実行するジョブに結合するための確実な方法が見つかりません。いくつかのカスタムsprocを作成して、実行時間とカタログテーブルから書き込まれた行を監視しようとすると、それらを呼び出しジョブと結び付けることができれば非常に有益です。 私は、catalog.executionsテーブルをmsdb.sysjobhistoryに結合するために使用できるテーブルがあるかどうかを確認しようとしています。SSISパッケージと呼ばれるジョブを関連付け、分析の実行にデータを使用する必要があります。

1
PostgreSQLはディスク上の新しいレコードを物理的にどのように配列しますか(主キーのクラスターの後)?
PostgreSQLがディスク上のレコードをどのように並べるかを知る必要があります。この場合、docsに記載されているインデックスの組み合わせを利用したいと思います。これは、ビットマップを使用して一致する行を取得し、物理的な場所に従ってそれらを返すことを理解しています。問題のテーブルは、主キーによってクラスター化されています。 私が理解しているように、PostgreSQLはクラスタリングが終了した後、自動的にクラスタリングを継続しません(ただし、特定のインデックスに従ってクラスタリングされたことを覚えています)。さて、これが主キーなので、物理的なストレージの順序はそれに従っているのでしょうか(これがtrueの場合は、特定のクエリに有利に使用したいと思います)。 要約すると、特にクラスタリングの後、PostgreSQLは新しいレコードをどのように順序付けますか? どうもありがとう!

2
SQL ServerをクラッシュさせるSQLクエリをトレースする方法
SQL Server 2008データベースサーバーがあります(たまたまMSフェールオーバークラスタリングで実行されていますが、ここでは関係ないと思います)。 私たちのアプリケーションはDBアクセス用にHibernateを実行しており、最近v3.1から3.6にアップグレードして以来、SQL Serverが定期的に(24〜48時間ごとに、場合によってはさらに頻繁に)クラッシュすることを経験しています。 問題の特定の問題は、メモリに関連しているようです。サーバーがクラッシュする直前に(フェイルオーバークラスターマネージャーによって自動再起動されるようです)、次のようなエラーが表示されます。 Error: 701, Severity: 17, State: 130. There is insufficient system memory in resource pool 'internal' to run this query. また、時々(しかし定期的に)のメッセージ Error: 17300, Severity: 16, State: 1. (Params:). The error is printed in terse mode because there was error during formatting. Tracing, ETW, notifications etc …

3
SQL Serverサンドボックス
私はレポート開発者が作業を行うためのサンドボックスをセットアップしようとしています。私の現在の計画は、毎晩データベースを「リセット」することですが、どうすればよいかわかりません。リセットとは、サーバー上の1つのデータベースを除くすべてのユーザーテーブル、ビュー、ストアドプロシージャなどを基本的に削除することです。データベースを削除して再作成することもできると思いますが、適切なADグループ/ユーザーすべてへのアクセスを再度許可することになると思います。 これを実行するための最善の方法は本当にわからないので、あなたの何人かがいくつかの良いアイデア/提案を提供できることを願っています。ありがとう。 :明確にするために、我々は基本的に私達のデータベースでこれをやりたいhttp://try.discourse.org/t/this-site-is-a-sandbox-it-is-reset-every-day/57。唯一の違いは、毎日ユーザーを再現したくないということです。 バージョン: SQL Server 2008 エディション: Developer&Enterprise

2
変更データキャプチャと__ $ update_maskバイナリ
CDCを使用して、プロダクションテーブルに加えられた変更をキャプチャしています。変更された行は、データウェアハウス(informatica)にエクスポートされます。__ $ update_mask列には、更新された列がvarbinary形式で格納されていることを知っています。また、さまざまなCDC関数を使用して、そのマスクからそれらの列が何であるかを確認できることも知っています。 私の質問はこれです。誰かがそのマスクの背後にあるロジックを定義して、倉庫で変更された列を特定できるようにできますか?サーバーの外で処理しているため、これらのMSSQL CDC関数に簡単にアクセスできません。自分でマスクをコードで分解するだけです。SQL側のcdc関数のパフォーマンスは、このソリューションでは問題があります。 要するに、変更された列を__ $ update_maskフィールドから手動で識別したいと思います。 更新: 別の方法として、変更された列の人間が読めるリストを倉庫に送信することも可能でした。これは、元のアプローチよりもはるかに優れたパフォーマンスで実行できることがわかりました。 以下のこの質問に対するCLRの回答は、この代替案を満たし、将来の訪問者のためのマスクの解釈の詳細が含まれています。ただし、XML PATHを使用した受け入れられた答えは、同じ最終結果に対しては最速です。

1
非常に小さなテーブル(最大1000行)にインデックスを使用する理由はありますか?
アプリケーション開発時に、私はテーブルの多くを持っている(通常は10〜40個の値、データのストア「小さな」量id+ value時々とtype同様に、「オブジェクト」の属性ホールド)新鮮/腐った、赤/緑/青の製品について。 電子コンポーネントを新しくすることはできず、酸素ガスを赤くすることはできず、テーブルは無制限の行数を持つことができないので、この属性を製品テーブルに入れません... 属性を格納するために、私は、カスタム小さなテーブルを使用します。ここで、2-3フィールド:id、リンクするためのnameアプリケーションで表示するためといつかtype同じカテゴリ内の属性グループ場合。 主要な「オブジェクト」は、中間の多対多のテーブルを介して属性にリンクされています。 アイテム数が1000未満(通常は10〜40)の「小さな辞書」のインデックスを作成して維持する理由はありますか? 私のターゲットデータベースはOracleですが、ベンダーに依存しないことを願っています... 私は記入-いいえ、しかし私の記入を正当化する技術的スキルはありません...

5
楽観的ロックが悲観的ロックよりも速いのはなぜですか?
どちらの形式のロックでも、レコードが別のプロセスで現在使用されている場合、プロセスはレコードの正しいコピーを待機します。悲観的ロックの場合、ロックメカニズムはDB自体(ネイティブロックオブジェクト)から取得されますが、楽観的ロックの場合、ロックメカニズムは、レコードが「古くなった」かどうかを確認するタイムスタンプのような行バージョン管理の一種です。 ただし、どちらも2番目のプロセスがハングします。だから私は尋ねます:なぜ楽観的ロックは一般的に悲観的ロックよりも速く/優れていると考えられていますか?また、楽観よりも悲観が優先されるユースケースはありますか?前もって感謝します!

2
'name' @ '%'を使用してMySQLにユーザーを追加すると、エラー1396で失敗する
私はMySQLに新しいユーザーを追加しようとしました CREATE USER 'name'@'%' IDENTIFIED BY '...' ただし、次のエラーで失敗します。 ERROR 1396 (HY000): Operation CREATE USER failed for 'name'@'%' localhostのためだけにユーザーを追加することはうまくいきます: CREATE USER 'name'@'localhost' IDENTIFIED BY '...' 何が問題なのか、私にはわかりません。どんなアイデアでもありがたいです。 (私はを使用していmysql Ver 14.14 Distrib 5.1.66ます。)

1
ファイル増加イベントを特定する
デフォルトの自動拡張設定(1 MBまたは10%の増分)で作成され、長期間にわたって拡張された多数のDBをポートフォリオで見つけました。各DBファイルの外部断片化の量のゲージを取得したい場合、メタデータからDBファイルのサイズが(自動拡張または手動で)変更された回数を取得できますか?明確にするために、インスタンスの再起動以降だけでなく、DBの存続期間中のDBファイルの変更履歴をメタデータから取得できますか?

1
需要予測の分解のための単純なスキーマの設計
次の場合の基本的なスキーマ設計を思い付かなければならないトレーニング演習として、単純なデータベース設計タスクを実行しています。 製品の親子階層があります(例:原材料>作業中>最終製品)。 注文は各レベルで行われます。 注文数は、次の6か月間、毎週のバケットで確認できます。 製品レベルごとに需要予測を行うことができます。 次の6か月以内の任意の週の需要予測を今日行うことができます。 需要予測は、次の6か月間の毎週のバケットに対して行われます。 需要予測は通常、階層の上位レベル(原材料または仕掛品レベル)で行われます。下位レベル(最終製品)に分解する必要があります。 需要予測を上位レベルから下位レベルに分解する方法は2つあります。 ユーザーは最終製品の割合分布を指定します。たとえば、作業中の予測は1000だとします。ユーザーは、バケット10の最終製品1に40%、最終製品2に60%が欲しいと言っています。次に、今から10週目(日曜日から土曜日)の予測値最終製品1の場合は400、最終製品2の場合は600になります。 ユーザーは、バケット5の最終製品に対する注文に従って分解するだけで、バケット5の最終製品1と2の注文はそれぞれ200と800であり、EP1の予測値は((200/1000)* 100)%になります。 EP2の場合、「(作業中)」の予測の((800/1000)* 100)%になります。 予測は次の6か月間、毎週バケットで表示可能であり、理想的な形式は次のとおりです。 product name | bucket number | week start date | week end date | forecast value | created_on PRODUCT_HIERARCHYテーブルは次のようになります。 id | name | parent_id __________________________________________ 1 | raw material | (null) 2 | work in …

2
アーカイブ目的でデータベースをデフラグ/圧縮する最良の方法
電子メールのアーカイブに使用されるSQL Serverインスタンスがあります(サードパーティのアーカイブパッケージによる)。多くの場合、ソフトウェアは新しい空のデータベースにロールオーバーされます。これまでは四半期ごとに行ってきましたが、今は毎月行う予定です。アーカイブされるデータの量は1か月あたり約15〜20 GBで、データの大部分は少数のテーブル(通常は2〜4)にのみ存在します。 新しいデータベースにロールオーバーすると、古いデータベースは完全に読み取り専用で使用されます。私がしたいことは、すべてのテーブル/インデックスが隣接しており、非常に高いFILL FACTORを持ち、データファイルの最後に多くの空スペースがない、タイトなデータファイルに最適化することです。また、このサーバーではStandard Editionを使用していますが、暗黙の制限がすべてあります(それ以外の場合は、既にデータ圧縮を使用しています)。 私が考えることができるいくつかの可能性: REBUILD / REORGANIZEインデックス、DBCC SHRINKFILE(わかりました、これは賢明なオプションではありません。DBCCSHRINKFILEは触れたものから小便を断片化するためですが、完全を期すために含めています。) 自動統計をオフにして新しいデータベースを作成します。ソースデータベースからすべてのテーブルをスクリプト化して再作成します。bcpを使用して、データをクラスターキーの順序で新しいデータベースにエクスポート/インポートします。すべてのインデックスをスクリプト化して再作成します。フルスキャンですべての統計を再計算します。 自動統計をオフにして新しいデータベースを作成します。ソースデータベースからすべてのテーブルをスクリプト化して再作成します。SSISまたはT-SQLを使用して、新しいデータベースにデータを転送します。すべてのインデックスをスクリプト化して再作成します。フルスキャンですべての統計を再計算します。 いずれの場合も、最後の手順はデータベースを読み取り専用モードに設定することです。 これを行うには他にどのような良い/良いオプションがありますか?私の懸念は、高いFILL FACTORを維持するような方法で、論理的に連続した方法でデータを移動することです。 編集: データの約75%がイメージ(LOB)列に格納されているようです。

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