データベース管理者

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

6
誰かが実際にsqlcmdモードを使用しましたか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 SQLServer 2005は、SQLCMD Mode msdn linkと呼ばれるものを導入しました 。 一見すると、このモードは、コマンドラインバッチファイルからの変数置換と、OSコマンドへのエスケープを追加します。 この機能は、環境、実稼働、またはテストで使用されていますか?

1
SQL Serverのインデックス作成メモリ設定を変更するとどのような影響がありますか?
SQL Server 2008データベースにいくつかのインデックスを作成しようとしていますが、次のエラーメッセージが表示されます。 メッセージ8606、レベル17、状態1、行1このインデックス操作には、DOPあたり1024 KBのメモリが必要です。2のDOPの合計要件2048 KBは、高度なサーバー構成オプション「index create memory(KB)」に設定された704 KBのsp_configure値よりも大きくなっています。この設定を増やすか、DOPを減らしてクエリを再実行してください。 現在、インデックス作成メモリの設定は794KBに設定されており、クエリごとの最小メモリは1024KBに設定されています。これらの値を変更するとどのような影響がありますか?特にパフォーマンスに関して。それらを変更し、インデックスを作成して元に戻す必要がありますか、それとも0に設定する必要がありますか?

3
トリガーの発火順序を変更するには?
本当にトリガーを使用することはめったにありません。だから私は初めて問題に遭遇した。トリガーを持つテーブルがたくさんあります(すべてのテーブルに2つ以上)。すべてのテーブルのトリガーを起動する順序を知り、変更したいと思います。この情報を取得することは可能ですか? 追加: ここに私が見つけたmssqltips に関する良い記事があります。

1
地理的に異なる地域にあるDBを接続するためのベストプラクティス
さまざまな国でSQL Serverをセットアップしようとしています。リンクする必要がありますが、直接リンクする必要はありません(リンクサーバーのように)。言い換えれば、それらは疎結合できます。 それらをVPN経由で接続してリンクサーバーとして使用するか、Webサービス経由で疎結合を使用する方が良いでしょうか? 「より良い」とは、安定性を指します。

2
テキスト列のカスタム優先順位を使用したORDER BY
これはサンプルテーブルです。 name | cat ---------- hugo | sal bob | mgr mike | dev jeff | mgr john | dev どちらも nameとcatVarcharであること。 cat これらの名前のカテゴリを反映しますが、私はそれらに優先度を割り当て、この優先度順に並べられたすべてをリストするクエリが続きます。 どのような方法が可能ですか?cat2番目のテーブルに抽出し、外部キーなどを作成できます。ただし、アプリが非常にシンプルで、構造が変更できない場合、mgr最初にdev名前、次に名前、次に名前の順に並べる必要がある可能性がありsalます。 ?
12 oracle 

1
Google App Engineのポリモデルと通常のBigtableモデルのパフォーマンスへの影響は何ですか?
通常のGoogle App Engineの使用、ポリモデル、または通常の「Bigtable」モデルで最高のパフォーマンスを発揮するものは何ですか? ポリモデルは、事実上、継承追跡を提供する「クラス」と呼ばれる親テーブルに列を作成します。一方、親クラスから継承された通常のBigtableは、親にクエリを実行してすべてのサブタイプクラスのすべての子を検索する機能なしに、新しい別個のデータ構造を作成します。


5
MySQLベンチマークツールはありますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、データベース管理者のStack Exchangeのトピックになるようにします。 5年前に閉鎖されました。 パフォーマンスを向上させるためにmysqlの設定をtweekするのに役立つこのツールがあることはかなり前に聞いたことがありますが、見つけるのに継ぎ目がありません。高いトラフィックをシミュレートするためにapacheにabを使用でき、遅いログが生成されることを認識しています。ただし、クラッシュした場合(既に発生しており、本番モードであった場合)、なぜクラッシュしたか、構成からtweekedできるかどうかはわかりません。

1
関数DECRYPTBYPASSPHRASEを使用するときに、SQL Serverが暗号化されたデータを復号化するために使用したハッシュアルゴリズムをどのようにして知ることができますか?
私の質問は、2つのインスタンスを使用した次の実験に関連しています。 SQL Server 2017 Expressインスタンス(Microsoft SQL Server 2017(RTM-CU16)) SQL Server 2014 Expressインスタンス(Microsoft SQL Server 2014(SP2-CU18)) 関数ENCRYPTBYPASSPHRASEを使用してテキストを暗号化し、その結果をDECRYPTBYPASSPHRASEの@ciphertextとして使用しました。私のテストの結果はこれらでした: このMicrosoftの修正によると、 [...] SQL Server 2017は、SHA2ハッシュアルゴリズムを使用してパスフレーズをハッシュします。SQL Server 2016およびそれ以前のバージョンのSQL Serverは、安全と見なされなくなったSHA1アルゴリズムを使用します。 しかし、関数DECRYPTBYPASSPHRASEに関連する引数がない場合、データの暗号化に使用されたアルゴリズムはどのようにしてわかりますか?暗号化されたデータの一部ですか? 私のテストの結果から、SQL Serverは常にインスタンスで使用可能な新しいバージョンのアルゴリズムを使用してデータを暗号化すると思いますが、対応するアルゴリズムが見つからない場合、すべてのアルゴリズムがデータを復号化して、適合するアルゴリズムまたはNULLを返すまでデータを復号化します。暗号化されたデータを復号化するためにSQL Serverがどのハッシュアルゴリズムを使用したかを確認する方法が見つからなかったので、それは単なる推測です。

1
VARCHAR(MAX)列がインデックスに含まれている場合、値全体が常にインデックスページに格納されますか?
私はこの質問に触発されて、好奇心からこれを求めています。 VARCHAR(MAX)8000バイトを超える値は行に格納されず、個別のLOBページに格納されることがわかっています。その後、そのような値を持つ行を取得するには、2つ以上の論理IO操作が必要です(基本的に、理論的に必要な場合よりも1つ多い)。 リンクされた質問に示されているように、VARCHAR(MAX)列をINCLUDEd として一意のインデックスに追加できます。この列の長さが8000バイトを超える場合、そのような値は引き続きインデックスリーフページに「インライン」で格納されますか、それともLOBページに移動されますか?

5
SQLストアドプロシージャを一度に1人で実行するように制限するにはどうすればよいですか?
基本的に、あるテーブルから値を選択して別のテーブルに挿入するストアドプロシージャがあります。これは一種のアーカイブです。複数の人が同時にそうするのを避けたいです。 このプロシージャが実行されている間、他の人がそれを開始できるようにしたくはありませんが、シリアライゼーションは必要ありません。他の人は、処理が終わった後にプロシージャを実行します。 私が欲しいのは、プロシージャを実行しているときに、他の人がそれを開始しようとしてエラーが発生することです。 私はsp_getapplockを使用して試しましたが、その人がプロシージャを実行するのを完全に止めることができません。 また、sys.dm_exec_requestsを使用してプロシージャを見つけてブロックしましたが、これは機能しますが、一部のサーバーではsys.dm_exec_sql_text(sql_handle)を実行する権限がないため、最適ではないと思います。 これを行うための最良の方法は何ですか?

1
バックアップは破損を検出しますが、CHECKDBは検出しません
バックアップコマンドを実行したときにデータベースがある BACKUP DATABASE [MyDatabase] TO DISK = 'G:\Backup\MyDatabase_01_01_2018.bak' WITH NOFORMAT, NOSKIP, COMPRESSION, INIT, BUFFERCOUNT = 100 エラーメッセージが表示される メッセージ3043、レベル16、状態1、行8 バックアップ 'MyDatabase'は、ファイル 'F:\ Data \ MyDatabase_1.ndf'のページ(1:745345)でエラーを検出しました。 メッセージ3013、レベル16、状態1、行8 BACKUP DATABASEが異常終了しています。 完全なCHECKDBを実行しましたが、正常に戻りました。ページ検証オプションが(自分ではなく)NONEに設定されていることに気付いたので、それをCHECKSUMに変更し、DB内のすべてのインデックスを再構築して、すべてのページに書き込み、チェックサムを生成しました。この後もバックアップは失敗し、checkdbはまだクリーン(変更がない)を示しています。 DBCC CHECKDB('MyDatabase') WITH NO_INFOMSGS, ALL_ERRORMSGS, DATA_PURITY, EXTENDED_LOGICAL_CHECKS; SQLログから: DBCC CHECKDB(MyDatabase)with all_errormsgs、no_infomsgs、xxxによって実行されたdata_purityは0エラーを検出し、0エラーを修復しました。経過時間:0時間21分46秒。内部データベースのスナップショットには、分割ポイントLSN = 000ab776:0000112f:0001と最初のLSN = 000ab776:0000112d:0001があります。 DBCC PAGEを実行しましたが、エラーが発生しました(そもそも正しいページが返されていないようです)。印刷オプション2で実行できますが、戻りますが、正直なところ、何を探しているのかわかりません。 DBCC PAGE ('MyDatabase',1,745345,3) ページ:(3:513793) バッファ: …

4
オブジェクト名の引用符を外すためのMS-SQLの(非表示の)組み込み関数はありますか?
オブジェクト名(識別子)を一部のデータベース、たとえば一部のパラメーターテーブルに保存することがあります。'='または 'LIKE'比較演算子を使用してこれらのテーブルからレコードを選択するため、これらの名前を常に角かっこ付きまたは角括弧なしで保存するように注意する必要があります。 IF EXISTS (SELECT 1 FROM MYTABLE WHERE OBJ_NAME = '[TABLE_NAME]'; または IF EXISTS (SELECT 1 FROM MYTABLE WHERE OBJ_NAME = 'TABLE_NAME'; ただし、MS-SQLには、OBJECT_ID()関数など、角括弧の有無にかかわらずオブジェクト名を使用できるいくつかの関数があります。私はdbfiddle.ukに最小限の例を設定しました。 CREATE TABLE TEST ( ID INT IDENTITY(1,1) PRIMARY KEY, OBJECT sysname NOT NULL ); GO INSERT INTO TEST VALUES ('[obj1]'),('obj2'),('obj3'),('[obj4]'); GO これで、OBJECT_ID()を使用して、テーブルTESTが次のように存在するかどうかを確認できます。 IF OBJECT_ID('TEST') IS NOT …
12 sql-server  t-sql 

1
クエリストアの強制計画機能が機能しない
クエリストアフォースプラン機能がプランを適用していないようです。 クエリストアを知っています-強制は常に強制を意味するわけではありません。ただし、私の計画はさほど変わらない場合がありますが、クエリオプティマイザーは引き続き不適切なインデックスやループの選択などを選択する可能性があります。 基本的に:それは私の強制的な計画の選択を尊重しません。私は多くの計画を強制しましたが、それはうまくいきません。 私が見たとき、0の失敗数または理由がありますsys.query_store_plan force_failure_count。 拡張イベントquery_store_plan_forcing_failedは何も生成しません。0イベント。 たとえば、20.09に強制された計画。たまたま強制計画を使用したコンパイルは1つだけです。 計画は大きく異なります。1つはINDEX 1でハッシュ一致結合を使用し、もう1つはINDEX 2でループ結合を使用します。 バージョン:Microsoft SQL Server 2016(SP1-GDR)(KB3210089)-13.0.4202.2(X64) ここで何が欠けていますか?

3
PL / pgSQLで複数行のレコードを返す方法
私はRECORDデータ型を使用して複数のレコードを返そうとしていますが、RECORDに追加し、このRECORDに反復するたびに新しい値を追加/追加する方法があります。 つまり、ループが終了すると行のセットになるrecように追加したいrecと思います。これは、関数の最後で単に返すことができます。現在、私はこれをやっています- SELECT temp_table.col1, temp_table.col2, temp_table.col3 INTO rec FROM temp_table WHERE temp_table.col3 = false; 私の完全なコードはここにあります: CREATE OR REPLACE FUNCTION validation() RETURNS RECORD AS $$ DECLARE rec RECORD; temp_row RECORD; BEGIN CREATE TEMPORARY TABLE temp_table (col1 TEXT, col2 INTEGER, col3 BOOLEAN) ON COMMIT DROP; FOR temp_row IN SELECT * FROM staging.validation …

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