データベース管理者

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

1
最も近い過去の日付を検索するクエリ
料金表があります。各レートには有効な開始日があります。(任意のレートの終了日は、より新しい有効開始日を持つレコードの存在によって暗示されます。)また、アクティビティーのテーブルがあります。各アクティビティは日付に発生します。 その日に有効だったレートにアクティビティを一致させる最良の方法は何ですか? (残念ながら、データ構造を変更することはできないため、レートの明示的な終了日を追加することはできません。) rates: StartDate Rate 9/1/2010 17.00 10/1/2010 18.70 11/1/2010 20.00 Activities: WorkCenter ActionDate Hours WC1 9/30/2010 10 WC1 10/1/2010 5 WC2 10/30/2010 8 WC2 11/3/2010 9 Desired result: Workcenter ActionDate Hours Rate Cost(=rate*hours) WC1 9/30/2010 10 17.00 170.00 WC1 10/1/2010 5 18.70 93.50 WC2 10/30/2010 8 18.70 149.60 …
8 db2 

1
ビューを保存するときにSSMSがコードを書き換えないようにするにはどうすればよいですか?
次のWHEREような句を含むステートメントを使用するビューを作成しています。 WHERE ( col1 IS NOT NULL OR col2 IS NOT NULL ) AND NOT EXISTS (SELECT ...) 実行には平均10秒かかります。ただし、このクエリをビューとして保存しようとすると、SQL Server(またはMS SQL Server Management Studio Client)がクエリを「最適化」して、代わりにこの構造を使用します。 WHERE (col1 IS NOT NULL AND NOT EXISTS (SELECT ...)) OR (col2 IS NOT NULL AND NOT EXISTS (SELECT ...)) クエリを6分以上に減速します。この動作を無効にして、ビューがSQLクエリを正確に使用するようにする方法はありますか?

1
OUTPUTを使用したMERGEが正しく動作していないようです
テーブルに外部キーを追加し、FKに違反する行を削除して、ModifiedTable_invalidテーブルにコピーしています。スクリプトの一部として、次のMERGEコマンドを取得しました。 MERGE ModifiedTable t1 USING TargetTable tt ON t1.JoinColumn = tt.JoinColumn WHEN MATCHED THEN UPDATE SET t1.FkColumn = tt.FkSource WHEN NOT MATCHED BY SOURCE THEN DELETE OUTPUT DELETED.* INTO ModifiedTable_invalid; ただし、このコマンドは、MERGEコマンドによって削除された行だけでなく、ModifiedTableからModifiedTable_invalidにすべての行を挿入しているようです。何が起こっているのですか?削除された行のみをModifiedTable_invalidに配置するにはどうすればよいですか?

2
すべてのSQL Serverデータベースで自動縮小をオフにします。なぜこれが機能しないのですか?
sp_MSforeachdbを使用してこの問題を解決できると考えていましたが、エラーメッセージが表示されます。 sp_MSforeachdb ' BEGIN USE [?] DECLARE @dbid INT SET @dbid = DB_ID() IF(@dbid > 4) BEGIN --PRINT ''[?]'' + CONVERT(VARCHAR, @dbid) --ALTER DATABASE [?] SET AUTO_SHRINK OFF END END; ' PRINT行のコメントを外して上記のクエリを実行すると、システムデータベースを除くすべてのデータベースのリストが表示されます。ただし、ALTER DATABASE行のコメントを外すと、次の2つのエラーメッセージが表示されます。 メッセージ5058、レベル16、状態2、行9 オプション 'AUTO_SHRINK'をデータベース 'master'に設定できません。 メッセージ5058、レベル16、状態1、行9 オプション 'AUTO_SHRINK'をデータベース 'tempdb'に設定できません。 これにより、ある時点で操作が中断され、一部のデータベースのみで自動圧縮が無効になります。 すべてのデータベースで自動縮小を無効にするにはどうすればよいですか?おまけの質問:なぜ私のアプローチが機能しないのですか?

3
MySQL単一テーブルの静的および動的ピボット
次のようなテーブルがあります。 +----------------------------------------+ |Name | kode | jum | +----------------------------------------+ | aman |kode1 | 2 | | aman |kode2 | 1 | | jhon |kode1 | 4 | | amir |kode2 | 4 | +--------------------+-----------+-------+ MySQLでこのようなビューを作成するにはどうすればよいですか? kode1 kode2 count aman 2 1 3 jhon 0 4 4 amir 0 4 4
8 mysql  pivot 

1
MySQLソースコマンドを使用してSQLファイルを実行するときにコンソール出力を無効にする
まず、MySQLコマンドラインツールを起動します。 mysql --user=myusername --password=mypassword --silent --force -b 最後の-bオプションは、エラー時のビープ音を無効にするために使用されます。 次に、データベースを選択します。 use Mydatabasename; 次に、次のようなファイルからSQLを実行します。 source c:\x\y\z\myfile.sql それは物事がゆっくり行くときです。以前にファイルの一部を実行したことがあるので、コンソールは重複した行エラーでいっぱいになり、実行が著しく遅くなります。1秒あたり5〜10のステートメントが実行されます。重複する行がない場合、コードは5秒ごとに数万のステートメント(30k +)を実行します。 ファイルが大きく、一度に実行できないため、これを行う必要があります。
8 mysql  windows 

2
TableBを繰り返すことによってTableAのすべての行を小さなTableBの行に結合する方法はありますか?
タイトルが紛らわしいので申し訳ありませんが、そこに何を書けばよいかわかりませんでした。 数百レコードのテーブルがあります。このテーブルの各レコードをユーザーのはるかに小さい動的テーブルに割り当てる必要があります。ユーザーは、割り当てられるレコードを交互に切り替える必要があります。 たとえば、TableAが Row_Number()ID 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 そしてTableBは Row_Number()ID 1 1 2 2 3 3 私は最終結果セットが必要です UserId RecordId 1 1 2 2 3 3 1 4 2 5 3 6 1 7 2 …

2
開発完了後にテーブルの名前を変更する最良の方法
SQL Server 2008 r2でデータベースのテーブルと列の名前を変更する最も簡単で信頼性の高い方法は何ですか?開発が完了し、いくつかの理由により、一部のテーブルの名前を変更し、列をいくつか削除する必要があります。 同義語を使用することはそれを行う良い方法ですか?準備すべき落とし穴は何ですか?列の名前を適切に変更するのにも役立ちますか? これらのテーブルに関連する多くのスクリプトがあり、それらは.net開発者によってアプリケーションで参照されます。

2
PostgreSQLが起動可能/復元可能になるのを待つ方法は?
カスタムLinuxディストリビューションを実行している仮想マシンでPostgreSQL 8.2.1から9.2へのアップグレードをテストしています。アップグレード手順は次のとおりです。 pgサービスを開始する すべてのDBをバキュームします(これが必要かどうかは不明です) バックアップ pg_dumpall pgサービスを停止します データが格納されているディレクトリを移動します(/var/pg;これはシンプルな単一サーバーのセットアップです) PostgreSQL 9.2をインストールする initdb サーバーを起動する ダンプされたデータを復元する reindexdb すべてのDB referential_constraintsビューを再作成する すべてのDBをバキュームします(このアップグレード後にAFAIKが必要です) この手順は、1つのホストで問題なく動作し、問題なくバックアップおよび復元できます。データベースポイントが異なる1〜7の別のマシンでは正常に動作しますが、sleep 1after を追加しない限りサーバーは起動しません。initdbそれでも、「データベースシステムが起動中」であるため、ダンプされたデータを復元できません。これらのひどいハックを除いて、これに対処する標準的な方法は何ですか? sleepどちらかの操作の前に、十分な時間をかけてください。 動作するまで、または十分なタイムアウトになるまでループするか、 簡単なクエリを受け入れるか、タイムアウトに達するまでループします。 編集:「ソリューション」は結局機能しませんでした。データベースが復元を実行する準備ができていることを確認するには何が必要ですか?

2
postgresqlの高可用性
PostgreSQLデータベースは初めてです。最近、開発者はシステムでいくつかのアップグレードを行う必要がありました。 そのため、データベースのフェイルオーバーを実装するために、いくつかの方法を実装することを計画しています。 ここの postgresql wikiからの私の読書に基づいて、私たちはウォームスタンバイまたはホットスタンバイのいずれかを実装しようとしています。だから私の質問は: それらの主な違いは何ですか? どっちがいいですか? Postgresデータベースで高可用性を実現するために検討できる他の方法はありますか?

3
SQL Server仮想ログサイズ
私はやや偶発的なDBAで、データベース管理についてほとんど知らない人からいくつかのデータベースサーバー(2005年と2008年)を引き継いだ開発者であり、このテーマについてもっと学ぶことにあまり興味がなかったようです。 私は進むにつれて学んでいて、現在トランザクションログファイルを理解しようとしています。 すべてのデータベースは、単純な復旧モデルと自動圧縮で設定されています。自動圧縮を使用することは通常ひどい考えであることを理解しましたが、これはトランザクションログが制御不能に成長するのを防ぐために行われたことを理解しています。(自動圧縮は実際にログファイルまたはDBのみを圧縮しますか?) SQL Server 2012についてこれが見つかり、2005と2008のどちらが正しいのか、そしてそれが何を意味するのかについて疑問に思っていました。 ..]仮想ログが70%になると、データベースエンジンはシンプルリカバリモデルで自動チェックポイントをトリガーします。」仮想ログのサイズはどこに指定されていますか? すべてのデータベースで自動縮小を無効にしたいのですが、その前に、ログファイルがすぐに制御できなくなることがないことを知っておく必要があります。 どんな助けでも大歓迎です。


2
Oracleの更新をより高速に実行するように変更する方法は?
私はこのクエリを持っています: UPDATE ( SELECT h.valid_through_dt, h.LAST_UPDATE_TMSTMP FROM ETL_FEE_SCH_TMP d, FEE_SCHEDULE_HISTORICAL h WHERE h.FUND_ID = d.FUND_ID AND h.FEETYPE_NAME = d.FEETYPE_NAME AND h.BREAKPOINT_TYPE = d.BREAKPOINT_TYPE AND h.BREAKPOINT_QTY = d.BREAKPOINT_QTY AND h.LOW_BREAKPOINT_AMT = d.LOW_BREAKPOINT_AMT AND h.VALID_THROUGH = TO_DATE ('31-DEC-9999', 'dd-mon-yyyy') AND h.universe = 'DC' AND h.universe = d.universe AND EXISTS ( SELECT 1 …
8 oracle  rdbms 

1
同じエンティティのディメンションとファクト?
私はDW設計にかなり慣れておらず、ITインフラストラクチャをモデル化するためにDWに取り組んでいます。 この時点での主要な問題/質問は、ドライブ情報をモデル化する方法です。 ファイルとフォルダの集計データと物理ドライブの個別データを収集します。ドライブ情報には、最低でも合計と空き容量が含まれ、週に数回更新されます。 答える必要があるビジネス上の質問の1つは、ドライブの使用状況が時間とともにどのように傾向にあるかです。ドライブ情報は、ファイル/フォルダーレベルまでの階層でも使用されます。 私が今見ることができるオプションは: DRIVEディメンションとして 実装 階層設計を簡素化 これによりレポートに問題が発生しますか?ディメンションのみの時間制限データを報告することは私には直観に反するようです また、データを更新するたびに変化することがわかっているディメンションがあることも問題のようです。 DRIVEファクトテーブルとして実装 レポートを簡素化 複雑な階層(?)- Driveデータを特定のサーバーまたはコンピューターにマップするためにも使用します。ファクトテーブルを階層の中間レベルとして使用することはできますか?そうは思いません。 DRIVEファクトとディメンションの両方として実装 ファクトには、キー、日付、およびスペースに関するファクトのみが含まれます Dimensionには、使用しているコンピューターなど、その他の非追加データが含まれます。 両方の問題を解決しているようですが、これはアンチパターンですか?

2
ストアドプロシージャ内の権限を選択しますか?
動的SQLを使用するストアドプロシージャの実行権限をユーザーに付与しました。しかし、それを実行しようとすると、エラーが発生します。 SELECT権限がオブジェクト '[テーブル名]'、データベース '[データベース名]'、スキーマ 'dbo'で拒否されました。 ストアドプロシージャが使用するテーブルに対するアクセス許可をユーザーに付与する必要がありますか?それは私には本当に意味がありません。

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