データベース管理者

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


1
T-SQL-オプション(FAST x)およびトレースフラグ8722
私は長い間検索してきましたが、それでも私の問題に対する答えが見つかりません。 私たちのDynamics AXは、クエリヒントOPTION(FAST x)でクエリを生成しています。これにより、不適切な実行プランが使用される場合があります。開発者は、それはデフォルトであり、変更するのが難しいと言います(潜在的にすべてのフォームで修正する必要があります)。 したがって、トレースフラグを使用してこれらのヒントを上書きする方法を探していました。SQL Serverに一部のクエリヒント、特にOPTION句のヒントを無視させると主張されている素敵なトレースフラグ8722を見つけました。 ただし、これは私の場合は機能しません。トレースフラグ8602(インデックスヒントを無効にする)も有効にしようとしましたが、クエリはまだFAST xヒントを使用して実行されています(実際にOPTION句を削除する場合よりもはるかに遅くなります)。 プランキャッシュもクリアしようとしましたが、役に立ちませんでした。 何か案は?何か不足していますか? PS私はトレースフラグをグローバルに有効にしました。これはSQL Server 2012 Developerエディションです

3
アセンブリ 'system.web、version = 4.0.0.0、culture = neutral、publickeytoken = b03f5f7f11d50a3a。' SQLカタログで見つかりませんでした
System.WebのHTTPUtility.UrlDecodeメソッドを使用してSQL CLR関数をデプロイしようとしていますが、デプロイできません。受け取ったエラー: .Net SqlClientデータプロバイダー:メッセージ6503、レベル16、状態12、行1アセンブリ 'system.web、version = 4.0.0.0、culture = neutral、publickeytoken = b03f5f7f11d50a3a。' SQLカタログで見つかりませんでした。 機能(SSDTプロジェクトの一部として): using System; using System.Web; using System.Data; using System.Data.SqlClient; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; public partial class UserDefinedFunctions { [Microsoft.SqlServer.Server.SqlFunction(IsDeterministic = true)] public static SqlString udf_UrlDecode(SqlString encodedXML) { string decodedXML; decodedXML = HttpUtility.UrlDecode(encodedXML.ToString()); return new SqlString(decodedXML); } } このスレッドに関連しています。私はVS2012 …

1
クライアントTCPポートに基づくSQL Serverトレース
アプリケーションを実行するためにRDPを介してログインするさまざまなユーザーがいるWindowsターミナルサーバーがあります。アプリケーションは、SQL Server 2008 R2インスタンスに対してユーザーごとに1つ以上の接続を作成します。すべてのユーザーは、同じSQLログインを使用して同じデータベースにアクセスします。特定のユーザーのSQLセッションを追跡できるようにしたいのですが、どのSQLセッションがどのユーザーに属しているかを判別する方法が見つかりませんでした。ただし、アプリケーションの各インスタンスが使用しているソースTCPポートを特定できます。 クライアントのTCPポートに基づいてSQLセッションをトレースする方法はありますか?

2
複数行挿入と複数の単一行挿入
私のアプリでは、dbとアプリの間の往復回数が減ったという理由だけで、可能な場合は複数行の挿入を行います。 しかし、気になったのですが、他にメリットはありますか?たとえば、次のように複数の行が一度に挿入された場合: insert into tbl (c1, c2) values (v1, v2) (v3, v4) 対: insert into tbl (c1, c2) values (v1, v2) insert into tbl (c1, c2) values (v3, v4) テーブルにインデックスがありますが、最初のケースではインデックスが1回計算され、2番目のケースでは2回計算されますか?それとも、挿入ごとに常に1回ですか?両方のクエリが同じトランザクションにあると仮定します。 PostgreSQLを使用しています。

2
クエリから欠落している日付を挿入する
作成したクエリから欠落している日付を挿入するにはどうすればよいですか?以下の結果: Date Frequency 2014-05-18 5 2014-05-20 7 2014-05-25 7 2014-05-27 6 以下に示すように、結果に日付が0の欠落したい場合: Date Frequency 2014-05-18 5 2014-05-19 0 2014-05-20 7 2014-05-21 0 2014-05-22 0 2014-05-23 0 2014-05-24 0 2014-05-25 7 2014-05-26 0 2014-05-27 6 私はサーバーへの読み取り専用アクセスを持っていることに注意してください。

4
変数エンティティをリレーショナルテーブルに変換する方法がわからない
はじめにおよび関連情報: 次の例は、私が直面している問題を示しています。 動物には人種があり、猫でも犬でもかまいません。猫はシャムまたはペルシャのいずれかです。犬はジャーマンシェパードまたはラブラドールレトリバーにすることができます。 動物は強力なエンティティですが、その人種は2つの提供された値(猫または犬)の1つを持つことができる属性です。 これらの値はどちらも複雑です(問題を説明するためにここでは犬/猫のタイプのみを追加しましたが、猫/犬の名前やその他の要素もある場合があります)。 問題: この例では、リレーショナルテーブルを作成する方法がわかりません。 問題を解決するための私の努力: 問題を表す陳の表記法を使用してERダイアグラムを描画しようとしましたが、初心者であるため、正しく行ったかどうかはわかりません。ここに私が持っているものがあります: 間違ったものを描いた場合はお詫び申し上げます。その場合は訂正してください。私は単に「無料のソリューション」を手に入れたいのではなく、将来この問題を自分で解決できるように対処する方法を学びたいと思っています。 頭に浮かぶのは、猫用と犬用の2つの別々のテーブルを作成することだけです。また、Animalテーブルの人種属性には、猫または犬の値のみが格納されます。このようなもの: Animal< # Animal_ID, race, other attributes > Cat < # Cat_ID, $ Animal_ID, breed > Dog < # Dog_ID, $ Animal_ID, breed > 私は自分の解決策について本当に気分が悪く、それが間違っているのではないかと心配しています。 質問: 私の例をどのようにしてER図に変換できますか? そのER図をリレーショナルテーブルに変換する方法は? さらに情報が必要な場合はコメントを残してください。できるだけ早く投稿を更新します。私はここでかなり新しいので、適切なタグを追加してください。 ありがとうございました。


1
復元を行うときにログバックアップをテールしますか?
通常、運用サーバーから非運用サーバーへのDBの復元を実行するときは、WITH REPLACEオプションを使用します。 MSDNによれば、復元する前に実際にテールログをバックアップする必要があります。 データベースがオンラインであり、データベースで復元操作を実行する予定の場合は、まずログの末尾をバックアップします。オンラインデータベースのエラーを回避するには、BACKUP Transact-SQLステートメントの…WITH NORECOVERYオプションを使用する必要があります。 私がそれをしている方法のいくつかの危険または不利な点は何ですか?なぜ、最初にテールログをバックアップするのが有利なのですか? 私はSQL Server 2008R2を使用していますが、このクエリはほとんどの新しいバージョンのSQL Serverにも関連していると考えられるため、最初はそのようにタグ付けしていません。

1
二重引用符で列の値を追加する方法(文字列を引用符で囲む)
TEXT型の列を持つテーブルがあります。列には数字が入ります。私が達成しようとしているのは、それらの文字を二重引用符で囲むことです。 例: NAME ID QTY Apples A1 1 Oranges O1 1 Foo F1 0 理想的な出力: NAME ID QTY Apples A1 "1" Oranges O1 "1" Foo F1 "0" 次のSELECTステートメントを実行しようとしましたが、期待した結果が得られませんでした。おそらくあなたは私を正しい方向に導くことができますか? SELECT `qty`, CHAR('"'|| qty ||'"') FROM `myTable`; ありがとうございました
9 mysql  concat 

1
サーバーでSQLNET.ORAパラメータのアクティブな値を検索します
サーバー上のSQLNET.ORAパラメータのアクティブな値を見つけるにはどうすればよいですか? SQLNET.ORAファイルを見つける方法は知っていますが、そのファイルの値がアクティブに使用される保証はありません。パラメータを変更すると、リスナーの再起動が必要になる場合があり、場合によってはデータベースの再起動が必要になることもあります。デバッグのために、何も再起動せずに、パラメーターの設定方法を100%確実にする方法が必要です。 これは、に似ている、この質問が、私は探しています任意の現在の値を見つけるための方法。SQLクエリである必要はありません。 これが私がこれまでに試したものであり、それは不可能だと信じるようになります: トレースはそのデータを生成しません。 データディクショナリには何も表示されていません。 マニュアルやsupport.oracle.comには情報がありません。 賞金を提供しましたが、参加者はいませんでした。(しかし、誰かがこれに答えることができるなら、私は別の賞金を提供して授与します。)
9 oracle 

2
Cassandra:メンテナンス
私はCassandraに不慣れですが、SQLベースのリレーショナルデータベースにはある程度の経験があります。 展開後のCassandraのメンテナンス方法に関するベストプラクティス情報を見つけることができませんでした。データベースをVACUUMする必要がありますか?読み取り/書き込みの負荷はストレージの断片化を引き起こすと考えるべきです。 またはより一般的には、Cassandra実稼働デプロイメントを維持するためのベストプラクティスは何ですか?システムの状態を維持するために、定期的に何をしなければなりませんか?運用マニュアルでは、この点については触れていません。 ありがとう。

1
ALTER TABLE…通常のテーブルからパーティションテーブルへの切り替えが失敗する
以下のコードは次のことを行います: C:\ TEMPにデータベースplay_partitionを作成します 2つの同一のパーティション分割テーブルplay_tableおよびarchive_play_tableを作成します play_tableパーティション1をarchive_play_tableパーティション1に切り替えます play_tableパーティション2と同じファイルグループに、play_tableと同じ構造の新しいパーティション分割されていないテーブルtemp_tableを作成します。 play_table_partition 2をtemp_tableに切り替えます temp_tableをplay_tableパーティション2に戻そうとし、失敗します メッセージ4982、レベル16、状態1、行64のALTER TABLE SWITCHステートメントが失敗しました。ソーステーブル 'play_partition.dbo.temp_table'の制約をチェックすると、ターゲットテーブル 'play_partition.dbo.play_table'のパーティション2で定義された範囲では許可されない値が許可されます。 なぜ失敗するのですか? SQL Server 2014(Enterprise Edition Trial)を使用しています。 よろしく、 コリン・デイリー http://www.colindaley.com/translator /* Playing with partitioned tables */ USE master; GO DROP DATABASE play_partition; GO CREATE DATABASE play_partition ON PRIMARY( NAME = play_partition , FILENAME = 'C:\TEMP\play_partition.mdf') ,FILEGROUP play_fg1( …

1
Postgresでの同時更新の最適化
私はこのようなPostgresクエリを同時に実行しています: UPDATE foo SET bar = bar + 1 WHERE baz = 1234 各クエリは固定のK行数に影響し、行が更新される順序を強制する方法が見つからないため、デッドロックが発生します。現在、私は手動で順序を強制することで問題を解決していますが、これは、通常よりも多くのクエリを実行しなければならず、検索の複雑さをO(log N + K)からO(K log N)に上げる必要があることを意味します。 デッドロックに脆弱になることなくパフォーマンスを向上させる方法はありますか?Postgresが行をスキャンしたのと同じ順序で行を更新すれば(baz)、(baz, id)索引を索引に置き換えるとうまくいくと思いますが、これは追求する価値のあるアプローチですか?

2
/etc/my.cnfファイルでbinlog-format = ROWを起動時のデフォルトにするにはどうすればよいですか?
クエリSET GLOBAL binlog_format = 'ROW'を実行すると、そのセッションで機能します。 MySQLを停止して再起動した後、この設定を維持するにはどうすればよいですか? 注:私はMySQLのバージョン5.5.19(Moodleを使用)を使用していて、MyISAMからInnoDBにアップグレードしたばかりなので、この新しい設定が必要です。 私はこれら2つのコマンドを(個別に)my.cnfに追加しようとしました:binlog-format = ROWおよびbinlog_format = ROWで、どちらも機能しません。my.cnfを変更するたびに、MySQLを停止して再起動しました。 これを設定しないと発生するエラーは、悪質なエラーメッセージです。 デバッグ情報:ステートメントを実行できません:BINLOG_FORMAT = STATEMENTおよび少なくとも1つのテーブルが行ベースのロギングに限定されたストレージエンジンを使用しているため、バイナリログに書き込むことができません。トランザクション分離レベルがREAD COMMITTEDまたはREAD UNCOMMITTEDの場合、InnoDBは行ログに制限されます。
9 mysql  innodb  my.cnf 

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