データベース管理者

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

3
「データベースをSQL Azureにデプロイする」タスクがない
最近SQL Server 2014 Expressを自分のワークステーションにインストールし、SQL Azureに展開しようとしています。以前、SQL Server 2012 Expressを使用する以前のワークステーションで次のことを行っています。 データベースを右クリック> [タスク]> [SQL Azureにデータベースをデプロイ] SQL Server 2014では、このオプションは完全に欠落しており、代わりに新しいオプション「データベースをWindows Azure VMにデプロイする」に置き換えられています。 SQL Azureに展開するためのオプションがない理由を理解できません。SQL Server 2014で現在個別にインストールする必要があるものはありますか?私がオンラインで読んだことから、2014年版には両方のオプションが存在するはずです。マイクロソフトはSQL Server 2014 Expressのこのオプションを削除しましたか?

1
SQL Serverのアップグレードが失敗した後にデータベーススナップショットを「ハックドロップ」する方法
SQL Serverが2014にアップグレードされた後、データベーススナップショットを削除できない問題を処理しています。スナップショットは無効ですが、削除することはできません。 Connectアイテムには残念なコメントが含まれていますが、最終的には修正されると思います。しかし、私はこれにすぐに対処する必要があります。 このバグのために削除できないデータベーススナップショットを削除する方法はありますか?これを行うために文書化された手段をすべて使い果たしたのではないかと心配しています。ドキュメント化されていないシステムテーブルの変更が必要になる場合があります。データベース(スナップショット)を強制的に削除する方法はありますか?

2
いくつかのテーブルを1つのpostgresデータベースから別のデータベースに複製する
次のような状況です。3台のマシンでpostgresqlデータベースを実行しています。1つのマシンはクライアントアカウント情報を保持し(このマシンをCと呼びます)、他の2つのマシンはクライアントロギング情報を保持します(これらのL1とL2を呼び出します)。分割の理由は、複数のマシンにまたがるロードを分離するためです(そのため、一部のクライアントはログ情報をL1に送信し、一部はL2に送信します...おそらくL3、L4などの時間を送信します)。 ロギング情報を取得するときは、原則として、LnのロギングテーブルとCのクライアントアカウントテーブルの間で結合できるようにしたいと思います。実際には、このような結合はできません(可能な場合でも、 Cの読み込みを回避するため)。 私の考えは、Cのテーブルを各L1、L2、...に複製して、結合を実行できるようにすることです。Cのテーブルに関する限り、Cはマスターで、L1、L2、...はスレーブです。しかし、L1、L2などの他のテーブルでは、これらのマシンはマスターです。これは正確にはマスターマスターレプリケーションではなく、正確にはマスタースレーブではありません。 postgres(私は9.1を実行しています)のレプリケーションでこれを実行するように説得できますか。最後の手段として、テーブルを定期的に同期するコードを書くことができます(多少の遅延は許容できます)が、それはできません。 前もって感謝します。

1
pgAdmin 3で `postgresql.conf`を編集する方法は?
pgAdminアプリで「postgresql.conf」ファイルをどのように編集しますか? Postgres 9.3.xのpgAdmin 1.18.1で、File> Open postgresql.confを選択すると、ファイルピッカーダイアログが表示されます。そして、はい、私はpgAdminでスーパーユーザー「postgres」として接続しています。 古いバージョンのPostgresでこれを行ったことは知っています。

2
常時スキャンには0秒または2〜3分かかります
行を返さないことが保証されている以下のようなクエリは、いずれかのサーバーで0〜160秒かかります。 select col1, col2, col3 from tab1 where 0 = 1 2週間前、これは48時間の間隔で6回発生しました。先週、同じクエリにかかった時間は〜0秒でした。アプリケーションのSQLのログはありますが、容疑者はまだ見つかりません。さらに、上位0 / where 0 = 1タイプのクエリはデータページにヒットしないので、行/ページ/テーブルレベルのデータロックに耐性があると思いましたか?スキーマは(既知の)SQLの影響を受けません。 問題が一貫しておらず、サーバーに非常に大きな負荷がかかっているため、SQLプロファイラーを接続する前に何が起こっているのかについての理論を理解したいと思います。他のクエリは、これらの遅延中に問題なく実行されます。アプリケーションの既知の問題は、動的に作成された多数のSQLクエリです-48時間にわたって合計850k(ログ)クエリのうち約200kの一意のクエリは、このような問題を引き起こす可能性がありますか? サーバーはSQL Server 2005 Standard Edition、96 GB RAM、SAN上のディスクおよび4 CPU / 16コアを実行しています。データベースファイルとファイルグループは十分に最適化されており、問題にはなりません(ただし、これについては個別に調査しています)。 どこを見ればよいかについてのポインタは大歓迎です。 編集:完璧です!クエリを再生して実行プランを追加したところ、1分35秒かかりました。クエリ期間を示す実行プランとスクリーンショットは次のとおりです。 編集2:2回目の実行の統計時間の詳細。現在、一貫して遅いようですので、プロファイラーとperfmonを接続します: SQL Server Execution Times: CPU time = 0 ms, elapsed time = 97402 ms. SQL Server parse and compile …

1
pgBouncerはうまく機能しますが、時々利用できなくなります
忙しいpostgres 9データベースの前でpgBouncerを実行しています。ほとんどの場合、問題なく動作します。しかし、数時間ごとに、psycopg2からの例外を除いて、アプリケーションからエラーメールが届きます。 OperationalError(「サーバーに接続できませんでした:要求されたアドレスを割り当てることができません。サーバーはホスト "neo-hulk"で実行されており、ポート6432でTCP / IP接続を受け入れていますか?」) これは、タスクを実行しているセロリワーカーの束を備えたpythonアプリです。これらのエラーが発生したら、pgbouncer dbをチェックし、プールサイズが制限内であることを確認します。いくつかの実験を行った後、プールの最大サイズを400に、プールサイズを200に設定しました。プールモードは「セッション」です(リクエストはほとんど自動コミットで、ほとんどトランザクションはありません)。 何がpgBouncerをそのように「消失」させるのですか?それは短期間のみです(そして、全体としては、処理する要求の膨大な量と比較して、ごく少量の要求について話しています)が、失敗した要求は重要です。 ありがとう!

1
サービスアカウントはデータベースメールを使用するためにどのような権限が必要ですか?
管理されたサービスアカウントでSQL Server 2012インスタンスを実行しています。1つのアカウントでデータベースメールを構成し、テストメールを送信しようとしていますが、サーバーのイベントログにエラーが表示されます。 データベースエンジンインスタンス= MYINSTANCE;メールPID = 2132;エラーメッセージ:データベースの更新に失敗しました。理由:EXECUTE権限がオブジェクト 'sysmail_logmailevent_sp'、データベース 'msdb'、スキーマ 'dbo'で拒否されました。 データベースエンジンインスタンス= MYINSTANCE;メールPID = 2212; 例外の種類:Microsoft.SqlServer.Management.SqlIMail.Server.Common.BaseExceptionメッセージ:データベースの読み取りに失敗しました。理由:EXECUTE権限がオブジェクト 'sp_readrequest'、データベース 'msdb'、スキーマ 'dbo'で拒否されました。データ:System.Collections.ListDictionaryInternal TargetSite:Microsoft.SqlServer.Management.SqlIMail.Server.Objects.QueueItem GetQueueItemFromCommand(System.Data.SqlClient.SqlCommand)HelpLink:NULL Source:DatabaseMailEngine SQL Serverプロセスを実行しているアカウントをsysadminにすると、このエラーはなくなり、メールは正常に送信されます。ただし、私が行ったすべての調査では、このアカウントDatabaseMailUserRoleにmsdbデータベースでの役割を与えるだけで十分であることが示唆されています。これを実行しても、同じエラーが発生します。 BOLを調べましたが何も見つかりませんでした。

2
PostgreSQLの複合インデックスの列の順序(およびクエリの順序)
5万行のテーブルがあります。これは実際にはPostGISテーブルです。 クエリには4つの部分があります(1つは必須)(3つはオプション) 緯度と経度が4の交差ボックス(地理長方形)(st_intersectsを使用)[必須] 日付フィールドの日付範囲(最小、最大) 現在IN(.....)を使用しているファイルタイプ(最大8つのテキスト値のセット)ですが、必要に応じて一時テーブルにすることができます。INが嫌いな人が多いようです。 国(テキスト値)。 返される行は約100〜4,000になると思います テーブルに複合インデックスを作成する場合、最初にどの列を使用する必要がありますか。きめ細かいのはおそらく場所です(データは世界中に広がっています)。現在、GISTインデックスとして持っています。 他のインデックスはBTREEです。 私の直感は、きめ細かい、そして最後にコースを使用すると言います。たとえば、ファイルタイプは約12しかないため、インデックスのバケットは非常に大きくなります。 PostgreSQLとPostGISの達人(システムの内部を知っている人)は何と言っていますか? 更新: この質問をもっとはっきりさせましょう。 やるべきことを誰かにやらせてもらいたくない。あなたの時間を尊重しすぎます。ですから、後で説明の分析に行きます。 私が探していたのは、いくつかの指針とヒント、およびガイドラインだけでした。 私はこの優れた小さな投稿を読みました:https : //devcenter.heroku.com/articles/postgresql-indexes#managing-and-maintaining-indexesインデックスについて 私が通常行うことは、4つの個別のインデックス(ジオボックス、国名、file_type、および日付)を作成することですが、複合クエリが何を行うかを確認したいのです。 これらの仮定のいずれかが間違っているかどうか教えてください。(私は複合インデックスのアイデアにかなり新しいです) 順序は重要です。最初のインデックスとして、行を最も削減するインデックスを選択します(私の場合、場所(地理)は単純なポリゴンまたはマルチポリゴンが最も効果的です)。 クエリはインデックスをスキップすることがあります。しかし、キー(#1、#2、#3、#4)を使用して複合クエリを作成した場合、ユーザーが#1、#3を要求するものを作成した場合でも、プランナーは単一の複合クエリを使用します。維持されている。 通常、3つのBTREEクエリと1つのGIST(地理タイプ用)を作成します。PostGISは、複数のインデックスタイプからの複合の作成をサポートしていません。したがって、GISTを複合インデックスとして使用する必要があります。しかし、それは物事を傷つけるべきではありません。 追加の複合インデックスまたは単一値インデックスを作成する場合、プランナーは最もインテリジェントなインデックスを選択するのに十分スマートです。 国名は約250の異なる値を持つことができ、明らかに場所(ジオボックス)に強くリンクされていますが、行サイズを削減するための次善のインデックスがfile_typeの場合は、次に使用する必要があります。ユーザーがクエリセットで国や日付を頻繁に使用するとは思わない。 4つのキーの複合インデックスを作成すると、インデックスデータのサイズが大幅に増加することを心配する必要はありません。つまり、1つのキーのインデックスがパフォーマンス向上の90%になる場合でも、さらに3つの項目を追加して複合させることは問題ありません。逆に、実際には両方のインデックスを作成する必要があります。単一の地理インデックスと複合インデックス。プランナーにどちらが最適かを判断させ、インデックステーブルのサイズを考慮します。 繰り返しになりますが、私は誰かに私のソリューションを設計するように頼んでいません。しかし、PostGreSQLドキュメントが実装について教えてくれないことが必要です [まだEXPLAIN結果を表示できないのは、24Mの行テーブルからこの25Kの行テーブルを作成する必要があるためです。思ったより時間がかかります。私はものを1,000個のアイテムグループにクラスター化し、ユーザーに25K行テーブルに対してクエリを実行させています。しかし、次の質問では、そのクエリの結果を使用してMASTER 25M行テーブルに移動し、物事を引き出します。これが、複合インデックスのパフォーマンスが実際にHITになる場所です。 以下のサンプルクエリ: SELECT public.product_list_meta_mv.cntry_name AS country, public.product_list_meta_mv.product_producer AS producer, public.product_list_meta_mv.product_name AS prod_name, public.product_list_meta_mv.product_type AS ptype, public.product_list_meta_mv.product_size AS size, ST_AsGeoJSON(public.product_list_meta_mv.the_geom, 10, 2) AS …

1
mdfおよびldfの空き容量がデータベースの空き容量と一致しません
SSMSで、ファイルサイズに関連するプロパティを確認し、1つのデータベースの詳細を以下に示しました。ここで、値は他のプロパティと一致しません。ここで、mdf、ldf、および合計サイズのサイズは、各ウィンドウの下の他の値と一致します。ただし、追加された場合のmdfおよびldfの使用可能な空き領域は、データベースの縮小ウィンドウに表示される使用可能な空き領域およびデータベースのプロパティに表示される空き領域とは異なります。これは、どのデータベースにも当てはまります。なぜそうなのですか?誰かがこの背後にある論理を説明できますか? データベースのプロパティ: サイズ:91.31 MB 利用可能なスペース:13.40 MB データベースファイルのプロパティ: mdfサイズ:17 MB ldfサイズ:75 MB 縮小データベース: 現在割り当てられているサイズ:91.31 MB 利用可能な空き容量:13.40 MB 縮小ファイルの下-データファイル: 現在割り当てられているサイズ:16.38 MB 利用可能な空き容量:12.63 MB 縮小ファイル-ログファイル用: 現在割り当てられているサイズ :74.94 MB利用可能な空き容量:55.62 MB

3
SQLクエリ結果から大きなデータをコピーする
私のSQL Server 2008では、クエリを実行した後、データの戻り値は数百万単位という非常に大きなものになります。コピーを試みましたが、例外sqlメモリエラーが発生します。データ全体をコピーしてExcelに貼り付ける方法を教えてください。 データが整列していないため、それをtxtファイルにエクスポートしたくありません。だから私はそれを手動でコピーしてExcelに貼り付けたいです。この解決策を教えてください

2
SQL Serverで依存外部結合をネストする必要がありますか?
これについてはさまざまな情報を聞きましたが、正規または専門家の意見を期待しています。 複数LEFT OUTER JOINのがあり、それぞれが最後のに依存している場合、それらをネストする方が良いですか? 不自然な例では、JOINすることMyParentに依存JOINするMyChild: http://sqlfiddle.com/#!3/31022/5 SELECT {columns} FROM MyGrandChild AS gc LEFT OUTER JOIN MyChild AS c ON c.[Id] = gc.[ParentId] LEFT OUTER JOIN MyParent AS p ON p.[id] = c.[ParentId] http://sqlfiddle.com/#!3/31022/7と比較 SELECT {columns} FROM MyGrandChild AS gc LEFT OUTER JOIN ( MyChild AS c LEFT OUTER JOIN MyParent …

2
実行に時間がかかるsp_reset_connectionの考えられる原因は何ですか?
sp_reset_connectionSQL Server Profilerで表示すると、システムストアドプロシージャの実行に数ミリ秒以上かかるのはなぜですか? SQL Serverプロファイラーを使用して運用システムから簡単なトレースを取得し、SqlNexusを使用してそれを分析しました。SqlNexusは、sp_reset_connectionの累積期間が最も長く、トレース全体の33%であることを示しています。観測された期間は0〜7秒(12〜6,833,270マイクロ秒)の範囲ですが、平均は0.956秒です。 プールされた接続が再利用されるときにsp_reset_connectionが呼び出されていることを理解しています。これは無関係なトレースが原因で発生する可能性があるという提案を見ましたが、そうではないようです。 私はsprocが呼び出されたときにサーバーが何をしているかを読みましたが、この場合問題があるとは思いません-コードは、開いたトランザクションやクリーンアップする必要がある巨大な一時テーブルを残していません。 また、https://serverfault.com/questions/199974/sp-reset-connection-taking-a-long-time-to-runも確認しましたが、役に立ちませんでした。 編集(2013-12-23): すべてのケースで、読み取りと書き込みは0で、CPUはほぼ常に0です(ゼロ以外のCPUのインスタンスは2つだけで、どちらも16msです)。


4
SQL Serverは起動していますが、どのポートでもリッスンしていません
SQL Server 2012を新しくインストールしました。データベースはまだ作成されていません。そして、sa / passwordでManagement Studioを開くことができます。Binn \ sqlservr.exeはサービスとして開始され、サービスリストで開始されていることがわかります。ただし、以下のように確認したところ、それは1433ポートをリッスンしておらず、デフォルトでどのポートもリッスンしていませんでした。 tasklist|find /I "sql" 私は得ました: sqlservr.exe 5668 Services 0 40,112 K 5668はPIDだと思います。そして、PID = "5668"を取得するには、どのポートをリッスンしていますか。 netstat -ano | find /I "5668" でも、空白以外は何もありませんでした。一方、このサイトで投稿を検索した後、SQL Serverの構成を再確認しました。スタート->すべてのプログラム-> Microsoft SQL Server 2012->構成ツール-> SQL Server構成マネージャー-> SQL Server SQL Native Client 11.0構成->クライアントプロトコル-> TCP / IP->デフォルトポート1433。SQLServer(MyInstanceName)、SQL Server Agent(MyInstanceName)、SQL Server Browserの3つのサービスがあります。最後の2つは停止されます。 SQL Server構成マネージャー-> …

1
SQL Sentry Plan ExplorerはUDFの読み取りをカウントしますか?
次のようなクエリがあります。 select dbo.fn_complexFunction(t.id) from mytable t SQL Sentry Plan Explorerで、クエリプランにUDFを含めるには、SQL SentryでGet Estimated Planを実行する必要があることに気付きました。 「実際のプランを取得」を実行すると、論理読み取りやその他のメトリックにUDFで発生する操作が含まれているように見えません。このような場合、プロファイラーを使用する唯一の回避策はありますか?

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