データベース管理者

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


4
PostgreSQLで時系列を生成するにはどうすればよいですか?
日付系列を生成したい場合は、この質問を参照してください たとえば、5分ごとに24時間シリーズを生成するとします。PostgreSQLでそれを行うにはどうすればよいですか? PostgreSQLはgenerate_series()からはできますが、からはできtimestampませんtime。 任意のタイムスタンプを選択する方が良いですか、それともシリーズを生成する別の方法がありますか?

3
SQL Server 2005から2016へのデータの移行
SQL Serverの管理は初めてですが、SQL言語とSSISパッケージの作成に慣れています。 SQL Server 2005から2016にデータを移行したい。 私の質問は、システムデータベースや、インデックス、ストアドプロシージャ、ビュー、セキュリティ、権限などの他のオブジェクトについて心配する必要があるかどうかです。ログインまたは単にデータを移行できますか。 この場合、どちらをお勧めしますか。

2
古いハックに対するSQL Serverのアドバイス[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、データベース管理者のスタック交換のトピックになるようにします。 3年前休業。 夜の男とギャル、あなたの伝説のいくつかがここで私を助けることができるかもしれないことを願っています:) 私はSQL Serverをバージョン7で暗黒時代に最後に使用しました(2本の棒をこすって動かしました)。今、私は21世紀に入っており、再びDBAの仕事に戻りたいと思います。 「安価な」仮想マシンとインスタンスをセットアップして、最新の認定に向けて取り組みたいと思います(最新版は2017年4月に開始されると思います。これは私にとって良いタイミングだと思います)。私は特にBIの側面に興味があります。 誰でも仮想マシンの優れたホスティングプロバイダーを推奨できますか?Windowsサーバーを入手してそこから移動するのですか、それともどこかでパッケージを入手できますか?Azureは私が想定しているのですか、それとも他の場所ですか?私はいくつかのオプションがあると思います。いくつかの良いものを共有できることを願っています:) さらに、その他の役立つヒントは大歓迎です、乾杯!

4
第1正規形:明確な定義
第一正規形とは何かの決定版を取得しようとしています。私が読んだものはすべて、少し異なるスピンを持っています。 日付などの多くの当局は、定義によって関係は常に第1正規形であると言いますが、他の当局は要件のリストを提供します。つまり、1NFの要件は0から多くあります。 違いは、テーブルとリレーションの間の違いだと思います。テーブルは完全に混乱する可能性がありますが、リレーションシップは特定の制限に従います。したがって、リレーションがSQLでテーブルとして表されるという事実により、混乱が生じます。 SQLデータベースに関連するため、特に1NFに焦点を当てています。問題は、テーブルが最初の正規形であることを保証するために必要なプロパティは何ですか? 多くの当局は、表が関係を表す場合、それはすでに1NFにあると示唆しています。これにより、1NFの定義が関係の定義に戻ります。 1NFのテーブルのいくつかのプロパティは次のとおりです。 列の順序は重要ではありません[1] 行の順序は重要ではありません すべての行は同じ長さです(つまり、行データは列ヘッダーと一致します) 重複行はありません(これは代理主キーを使用して保証できますが、PK自体は必要ありません) 繰り返し列はありません 各列には単一の値(アトミック)が含まれています [1]技術的には属性は順序付けされていませんが、テーブルでは、行データは列ヘッダーと同じ順序である必要があります。ただし、実際の順序は重要ではありません。 上の複数のデータ: アトミックデータの概念は、アイテムをさらに分解することはできないということです。この概念は、技術的にはすべて吐き気を分解することができますが、問題のデータは、データの使用方法によっては、実際にはそれ以上分解できないという点で評価されています。 たとえば、通常、完全な住所または完全な名前はさらに分解する必要がありますが、名前や町の名前などのコンポーネントは、文字列として使用できるという事実にもかかわらず、おそらくこれ以上分解すべきではありません。 列を繰り返すように、それが持っている貧弱な設計カラムでほぼ等列、繰り返しphone1、phone2一般に等、繰り返されるデータは、追加の関連テーブルの必要性を示しています。 依存 同じヘッダーに準拠していることを除いて、行間に関係があってはなりません。 列の間にも関係があってはなりませんが、それがより高い正規形の主題であると私は信じています。 問題は次のとおりです。1NFの定義には上記のどれくらいが含まれていますか?独立した行ビットもそれに含まれますか?

4
database_scoped_configurationsのバグ
私は結果セットを挿入しようとしています: SELECT * FROM sys.database_scoped_configurations サーバー上のすべてのデータベースの設定を確認したいので、一時テーブルに入れます。だから私はこのコードを書きました: DROP TABLE IF EXISTS #h CREATE TABLE #h(dbname sysname, configuration_id INT, name sysname, value SQL_VARIANT, value_for_secondary SQL_VARIANT) EXEC sys.sp_MSforeachdb 'USE ?; insert into #h(dbname, configuration_id, name, value,value_for_secondary) SELECT ''?'' as dbname, * FROM sys.database_scoped_configurations D' SELECT * FROM #h H ただし、データベースごとに1行しかなく、各データベースで単純な選択を実行すると予想される4行はありません。 これをコード化するには、sp_MSForEachDBを使用するよりも優れた方法があることを知っているので、いくつか試しました。しかし、データベースごとに1行しか取得できません。SQL Server 2016 …

2
インストール後にSQL Serverネットワーク構成ノードが構成マネージャーに表示されない
Windows 2012 R2 Datacenter 64ビットを実行しているサーバーがあります。SQL 2016 RC3を問題なく使用していたので、MSDNのRTMビルドに置き換えたいと思います。 RC3をアンインストールしてからRTMをインストールした後、サーバーにリモートで接続できませんでした。調べたところ、「SQL Serverネットワーク構成」のノードがないことがConfiguration Managerで確認できました。32ビットバージョンがリストされ、TCP / IPが有効になっています。この不足しているノードをインストールするにはどうすればよいですか? SQLブラウザーサービスを開始し、2016インストールを修復しようとしました。この不足しているコンポーネントを復活させるものは何もないようです。 RC3とRTMのインストールの一部が残っており、アンインストールできないことが興味深いです。これが適切かどうかはわかりません。SQL Serverのアンインストールに関するMicrosoftの指示に従って、すべてが正しく行われたように感じました。

2
2つの列を追加するとクエリが応答しない
2つの列を選択に追加すると、クエリが応答しません。列のタイプはですnvarchar(2000)。それは少し珍しいです。 SQL Serverのバージョンは2014です。 プライマリインデックスは1つだけです。 レコード全体はわずか1000行です。 これが以前の実行計画です(XML showplan): 後の実行計画(XML showplan): これがクエリです: select top(100) Batch_Tasks_Queue.id, btq.id, Batch_Tasks_Queue.[Parameters], -- this field btq.[Parameters] -- and this field from Batch_Tasks_Queue with(nolock) inner join Batch_Tasks_Queue btq with(nolock) on Batch_Tasks_Queue.Start_Time < btq.Start_Time and btq.Start_Time < Batch_Tasks_Queue.Finish_Time and Batch_Tasks_Queue.id <> btq.id and btq.Start_Time is not null and btq.State …

2
sp_msforeachdbは、舞台裏でどのように正確に機能しますか?
発生している問題をトラブルシューティングする必要があります。また、問題を解決するためにsp_msforeachdbがどのように機能するかを理解するための支援が必要です。 sp_msforeachdbを実行するたびにエラーが発生する Msg 102, Level 15, State 1, Incorrect syntax near '61' 私のコードの例は次のとおりです: EXEC SP_msforeachdb 'SELECT ''?'' AS Database FROM ?.sys.objects WHERE name like ''%aetna%'' ただし、sp_msforeachdbのパラメーターとしてどのクエリを使用してもかまいません。同じエラーが発生するたびに。「61s1d」で始まるデータベースがあるので、DB名に問題があると思いますが、sp_msforeachdbの背後で何が起こっているのか、正直にわかりません。 注意事項。 数字で始まる唯一のデータベース 「データベースが '%61%'のようなものではありません……」のようなコードを使用することはできますが、それでも同じエラーが発生します。 データベース名の変更をテストすることはできません-接続しているものが多すぎます。 「51」で始まるテストデータベースを作成すると、そのデータベースのエラーも表示されます どうすればこれを克服できますか?

2
> =および>のカーディナリティ推定(ステップ内統計値)
SQL ServerがSQL Server 2014のwhere句の「より大きい」と「等しい」をどのように推定するかを理解しようとしています。 私がそうすれば、それがステップに到達したときのカーディナリティ推定は理解していると思います select * from charge where charge_dt >= '1999-10-13 10:47:38.550' カーディナリティの推定値は6672で、32(EQ_ROWS)+ 6624(RANGE_ROWS)+ 16(EQ_ROWS)= 6672(下のスクリーンショットのヒストグラム)として簡単に計算できます。 しかし、私がするとき select * from charge where charge_dt >= '1999-10-13 10:48:38.550' (時間を10:48に増やしたため、ステップではありません) 推定値は4844.13です。 それはどのように計算されますか?

2
関数を呼び出すときにスキーマプレフィックス(dbo)が必須なのはなぜですか?
ユーザーがデフォルトのスキーマ(dbo)でマップされ、スキーマにプレフィックスを付けずに[dbo]の下のすべてのテーブルを選択できる場合。 デフォルトのスキーマの下にある場合、プレフィックスなしでストアドプロシージャを実行できます。 それでは、なぜ関数の前にスキーマを付ける必要があるのでしょうか。 ありがとう!

1
テーブルに格納された階層内の階層的な権限
次のデータベース構造を想定します(必要に応じて変更可能)... ページと有効なアクセス許可を含む行を返すことができるように、特定のページで特定のユーザーの「有効なアクセス許可」を決定するための良い方法を探しています。 理想的なソリューションには、現在のユーザーの特定のページ行の「有効な権限」を評価するために必要な再帰を実行するためにCTEを使用する関数が含まれると考えています。 背景と実装の詳細 上記のスキーマは、コンテンツ管理システムの開始点を表しており、ロールにユーザーを追加したり、ロールからユーザーを削除したりすることで、ユーザーに権限を付与できます。 システム内のリソース(ページなど)はロールに関連付けられており、そのロールにリンクされたユーザーのグループに付与する権限を付与します。 すべてのロールを拒否し、ツリー内のルートレベルページをそのロールに追加して、ユーザーをそのロールに追加するだけで、ユーザーを簡単にロックダウンできるようにするという考え方です。 これにより、(たとえば)会社で働いている請負業者が長期間利用できない場合でも権限構造をそのままにしておくことができます。これにより、その1つのロールからユーザーを削除するだけで、元の権限を同じように付与することもできます。 。 アクセス許可は、これらのルールに従うことによってファイルシステムに適用される可能性がある一般的なACLタイプのルールに基づいています。 CRUD許可はヌル可能ビットにする必要があるため、使用可能な値はtrue、falseであり、以下の場合は定義されていません。 false +何か= false true +未定義= true true + true = true 未定義+未定義=未定義 いずれかの権限がfalseの場合-> false そうでない場合はtrue-> true その他(すべて未定義)-> false つまり、ロールメンバーシップを介して権限が付与され、拒否ルールが許可ルールをオーバーライドしない限り、何も許可されません。 これが適用される権限の「セット」は、現在のページまでのツリーに適用されるすべての権限です。つまり、このページのツリー内のページに適用されるロールにfalseがある場合、結果はfalseになります。ただし、ここまでのツリー全体が定義されていない場合、現在のページには真のルールが含まれ、結果はここでは真になりますが、親では偽になります。 可能な場合はdb構造を大まかに保持したいと思います。また、ここでの目標は次のようなことを実行できるようにすることです。select * from pages where effective permissions (read = true) and user = ?したがって、どのようなソリューションでも、有効なアクセス許可を持つクエリ可能なセットを許可する必要があります。何らかの方法で(基準を指定できる限り、それらを返すのはオプションです)。 2つのページが存在し、1つが他の子であり、2つの役割が存在すると仮定します。1つは管理ユーザー用で、もう1つは読み取り専用ユーザー用であり、どちらもルートレベルのページにのみリンクされ、期待どおりの出力として次のように表示されます。 Admin user: Id, Parent, …

2
配列を含むjsonbキーの並べ替え順序をカスタマイズする
PostgreSQLにいくつかのデータを含むテーブルがあります。 create table t2 ( key jsonb, value jsonb ); INSERT INTO t2(key, value) VALUES ('1', '"test 1"') ,('2', '"test 2"') ,('3', '"test 3"') ,('[]', '"test 4"') ,('[1]', '"test 5"') ,('[2]', '"test 6"') ,('[3]', '"test 7"') ,('[1, 2]', '"test 8"') ,('[1, 2, 3]', '"test 9"') ,('[1, 3]', '"test 10"') ,('[1,2,4]', …

2
SSISデータフローデータアクセスモード-「テーブルまたはビュー」と高速ロードのポイントは何ですか?
SQL Server Business Intelligence Development Studioを使用して、OLE DB宛先データフローへのフラットファイルを大量に実行して、SQL Serverテーブルにデータをインポートします。OLE DB宛先エディターの「データアクセスモード」では、デフォルトで「テーブルまたはビュー-高速ロード」ではなく「テーブルまたはビュー」になります。違いはなんですか; 認識できる唯一の違いは、高速のロードがデータをはるかに高速に転送することです。
9 ssis 


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