データベース管理者

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

4
リンクサーバーから@@ SERVERNAMEを取得する
これは基本的な質問のようですが、答えは見つかりません-リンクサーバーからサーバー名/インスタンスなどを取得できるようにする必要があります。私はいくつかのことを試しました: select <linked server>.@@SERVERNAME; select <linked server>.SERVERPROPERTY('ServerName'); ...しかし喜びはない。何か案は? これはSQL 2008 R2&2014(2008R2はリンクサーバーです) 編集:エラーは次のとおりです。 メッセージ102、レベル15、状態1、行2 '@@ SERVERNAME'付近の構文が正しくありません。

1
以下のクエリから階層値を取得するにはどうすればよいですか?
という名前Categoryの列を持つテーブルという名前のテーブルがありますCategoryID。と呼ばれる同じテーブルに参照列がありますfParentCategoryID。 すべてのカテゴリIDとそのサブカテゴリIDをカンマで区切る必要があります。例 -10の親カテゴリIDが1で、20の親カテゴリIDが10の場合、カテゴリID 20を印刷するとき、1と10の両方を親としてカンマ区切り値で印刷する必要があります。 以下のクエリを試してみましたがNULL、ParChild列が表示されます。助けてください。 ;WITH cteReports AS ( SELECT c.CategoryID, c.fParentCategoryID, [level] = 1, ParChild=cast(CAST(c.fParentCategoryID AS VARCHAR(200)) + ',' + CAST(c.CategoryID AS VARCHAR(200)) AS VARCHAR(MAX)) FROM retail.Category c WHERE c.fParentCategoryID is NULL UNION ALL SELECT c.CategoryID, c.fParentCategoryID, [level] + 1, ParChild = ParChild + ',' + CAST(c.CategoryID AS VARCHAR(200)) …

2
Management Studioの登録済みサーバーのタブの色
SSMSでは、接続ごとにカスタムカラーを使用できます。 この情報がどこに保存されているか誰か知っていますか?色の設定を保持したいのですが、失います。 編集する オブジェクトエクスプローラーから接続すると、色を設定できます。しかし、これは登録済みサーバーで設定した色とは異なるようで、これが失われ続けています。(確かに、私はローミングプロファイルにいます。) 登録済みサーバーパネルを使用するのは、マルチサーバー操作を行うときだけであり、そのパネルを開いているときはさらに注意を払います。そのため、オブジェクトエクスプローラーに関連付けられた色も使用できるようにしたいと考えています。 ありがとう

3
SQL ServerをホストするVMの専用リソース
私の理解では、VMを使用する大きな利点の1つは、ホスト上の仮想マシン間でリソースを共有できることです。したがって、120個のCPUを搭載したホストに、それぞれに32個のCPUを搭載した5つのVMを配置できます。追加のCPUはVM間で「共有」され、ホストは必要に応じて動的にCPUを割り当てます。メモリについても同じです。 また、これはSQL Serverを格納するVMにとっては大きな問題であると理解していましたが、私のVM管理者は同意しません。誰かが何らかの形で証拠や文書を持っていますか? 問題かどうかはわかりませんが、VMWareを使用しています。

2
SQL Serverインスタンスの起動パラメーターの一覧表示
サーバーを再起動し、どのトレースフラグがアクティブであるかを確認しましたDBCC TRACESTATUS。 トレースフラグ:3688機能:開始および停止したトレースに関するエラーログへのメッセージを削除します ここでは、各トレースフラグの機能を確認できます。 フラグ3688 開始パラメーターは次のとおりです。 質問: T-SQLを使用して、SQL Serverサービスの起動パラメーターを確認するにはどうすればよいですか?

1
読み取り専用トランザクションのコミットとロールバックにパフォーマンスの違いはありますか?
(繰り返し可能な読み取り)トランザクション(BEGIN TRAN)を開いて、特定のレコードに対していくつかの作業を行います。まず、変更する必要があるデータがデータベースにあるかどうかを確認します。いくつかのケースでは、それがあり、それから私の変更に進みます。しかし、場合によっては何もすることはありません。この場合、私はCOMMIT TRANまたはまたはROLLBACK TRANストアドプロシージャから戻ります。現時点ではまだデータは変更されていないため、コミットとロールバックの効果は同じです。 コミットとロールバックのどちらを選択するかについて知っておくべき考慮事項はありますか?異なるパフォーマンスコストはありますか?その他の考慮事項?

3
Windows 10でのSQL Server 2008 R2の保守
Windows 10でSQL Server 2008 R2を実行する必要がありますが、サポートされていないため、更新を取得できません。新しいバージョンのSQL Serverをインストールすることはできません。すべてのサービスパックと累積的な更新プログラムをオンラインで見つけることができます。 質問: 更新を自動的に取得する方法はありますか? そうでない場合、すべてのサービスパックを順番にインストールする必要がありますか、それとも最新のものだけをインストールできますか?

2
出現頻度の高い用語の低速全文検索
テキスト文書から抽出されたデータを含むテーブルがあります。データは、"CONTENT"GINを使用してこのインデックスを作成したという名前の列に保存されます。 CREATE INDEX "File_contentIndex" ON "File" USING gin (setweight(to_tsvector('english'::regconfig , COALESCE("CONTENT", ''::character varying)::text), 'C'::"char")); 次のクエリを使用して、テーブルで全文検索を実行します。 SELECT "ITEMID", ts_rank(setweight(to_tsvector('english', coalesce("CONTENT",'')), 'C') , plainto_tsquery('english', 'searchTerm')) AS "RANK" FROM "File" WHERE setweight(to_tsvector('english', coalesce("CONTENT",'')), 'C') @@ plainto_tsquery('english', 'searchTerm') ORDER BY "RANK" DESC LIMIT 5; ファイルテーブルには250 000行が含まれ、各"CONTENT"エントリは1つのランダムな単語とすべての行で同じテキスト文字列で構成されます。 ここで、ランダムな単語(テーブル全体で1ヒット)を検索すると、クエリは非常に高速に実行されます(<100ミリ秒)。ただし、すべての行にある単語を検索すると、クエリの実行が非常に遅くなります(10分以上)。 EXPLAIN ANALYZEは、1ヒット検索の場合、ビットマップインデックススキャンとそれに続くビットマップヒープスキャンが実行されることを示しています。遅い検索では、代わりにSeq Scanが実行されますが、これは非常に時間がかかっています。 もちろん、すべての行に同じデータを含めることは現実的ではありません。しかし、ユーザーがアップロードしたテキストドキュメントやユーザーが実行する検索を制御できないため、同様のシナリオが発生する可能性があります(DBで非常に出現頻度の高い用語で検索)。このようなシナリオで検索クエリのパフォーマンスを向上させるにはどうすればよいですか? PostgreSQL 9.3.4の実行 クエリプランEXPLAIN …

1
CLIプロンプトでPostgresのバージョンを表示する方法は?
接続しているサーバーのバージョンをコマンドライン(コンソール)インターフェイスプロンプトに表示します。私がドキュメントで読んだものから、シェルコマンドを実行することが可能であり、psql変数値を表示することが可能です。 接続時にサーバーのバージョン情報を取得し、クライアントのプロンプトで使用するという考え方です。どうすれば(.psqlrcファイル内で)サーバーのバージョンをpsql変数に割り当てることができますか? 編集:ジャックダグラス♦は\gset機能を指摘することで正しい答えを持っています。それはで終わった show server_version \gset \set PROMPT1 '%:server_version: >' ありがとうございました。


3
インデックス調整の質問
私はいくつかのインデックスを調整していて、いくつかの問題があなたのアドバイスを望んでいるのを見ています 1つのテーブルに3つのインデックスがあります dbo.Address.IX_Address_ProfileId [1 KEY] ProfileId {int 4} Reads: 0 Writes:10,519 dbo.Address.IX_Address [2 KEYS] ProfileId {int 4}, InstanceId {int 4} Reads: 0 Writes:10,523 dbo.Address.IX_Address_profile_instance_addresstype [3 KEYS] ProfileId {int 4}, InstanceId {int 4}, AddressType {int 4} Reads: 149677 (53,247 seek) Writes:10,523 1-最初の2つのインデックスは本当に必要ですか、それとも削除する必要がありますか? 2- profileid = xxxxである使用条件を実行するクエリと、profileid = xxxxおよびInstanceID = xxxxxxである他の使用条件があります。オプティマイザが1番目または2番目ではなく3番目のインデックスを選択する理由 また、各インデックスでロック待機を取得するクエリを実行しています。これらのカウントを取得している場合、このインデックスを調整するにはどうすればよいですか? …

2
SQL Server Management Studioがクラッシュするのはなぜですか?
SSMSを開くと、次のメッセージが表示されます。 SSMS-SQL Server Management Studioで問題が発生したため終了します。ご不便をおかけしてしまい申し訳ございません。 私に何ができる? 再起動後も問題は解決せず、アドインをインストールしていません。 これは、Windows XPで実行されているSQL Server 2008 R2 SSMSです。 SSMSは以前このマシンでエラーなしで実行されていました。 SSMSは、SQL Serverパッケージだけからではなくインストールされました。パッケージを再インストールすることをお勧めしますか?または、SSMSを単独でインストールする方法は? すべてのユーザーに同じ問題が発生します。

1
大規模なPostgreSQL / PostGISデータベースの移動
非常に大きな(約320 GB)PostGISデータベースをserver1(PostgreSQL 9.1、PostGIS 1.5)からserver2(PostgreSQL 9.3、PostGIS 2.1)に移動してアップグレードする必要があります。 アップグレードプロセスは十分に文書化されています。問題は、server1にファイルをダンプしてチェックサムし、それをserver2にコピーして合計を確認するのに十分なスペースがないことです。私は試した: を使用して、server1からserver2にダンプをパイピングしますnc。 を使用してserver1にマウントされているserver2ファイルシステムに直接ダンプファイルを書き込む。sshfs どちらの場合も、ダンプファイルが破損しているようです。pg_restoreこのようなエラーで別の場所で壊れました: pg_restore: [compress_io] could not uncompress data: incorrect data check 誰かがこの移動とアップグレードを完了するためのより良い方法を提案できますか? 更新: NFSを試してみました(そしてSSHFSにもう一度試してみました)。これらのリモートファイルシステムがこれだけのデータを確実に転送できないことは明らかです。結果のSQLファイルから明らかにブロックが欠落しているため、インポート中に次のような構文エラーが発生します。 ERROR: invalid input syntax for integer: "8266UPDATE spatial_ref_sys o set auth_name = n.auth_name, auth_srid = n.auth_srid, srtext = n.srtext, proj4text = n.proj4text FROM _pgis_restore_spatial_ref_sys n WHERE o.srid = …

1
CPU使用率は低いが信号待機が多い
私は、16のCPUを搭載したサーバーで、a max degree of parallelismが8、max worker threads設定が0に設定されています。 所定の時間、私の信号待機は20%でしたが、その間の私のOS CPU使用率は25%を超えることはありませんでした。誰かが私の信号待機が非常に高かった理由を説明できますか? 私のベンダーはクラス最高のスコアリングシステムを使用しており、信号待機が10%以下であると予想します。(CPUを追加せずに)これを修正するにはどうすればよいですか? NUMAノードごとに8個を超えるCPU はないため、トレースフラグ8048は適用されません。 最大のインスタンス待機はCXPACKET(70%)、次にPREEMPTIVE_OS_PIPEOPS(20%) cost threshold for parallelism50に設定されています。上げる必要がありますか?何に? これは、SQL Server専用の物理マシン(VMではない)です。 監視ツールを使用して、最も頻繁に実行されるクエリとプロシージャを特定しています。高CPU、高I / O、または高継続時間を確認しますか?通常、アプリはI / Oを集中的に使用するため、高いI / Oを調整します。しかし、問題はシグナル待機であるため、CPU使用率が高いことを確認する必要がありますか? アプリが追加のスレッドを必要とするウェアハウススタイルのクエリを実行するため、4 に下げるというMax Vernonの推奨を回避したいと思ってMAXDOPいました。

1
SELECT DISTINCT ONサブクエリが非効率的なプランを使用しています
私はテーブルを持っていますprogresses(現在何十万ものレコードが含まれています): Column | Type | Modifiers ---------------+-----------------------------+--------------------------------------------------------- id | integer | not null default nextval('progresses_id_seq'::regclass) lesson_id | integer | user_id | integer | created_at | timestamp without time zone | deleted_at | timestamp without time zone | Indexes: "progresses_pkey" PRIMARY KEY, btree (id) "index_progresses_on_deleted_at" btree (deleted_at) "index_progresses_on_lesson_id" btree (lesson_id) "index_progresses_on_user_id" …

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