データベース管理者

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

2
複数のファイルのファイルグループに割り当て単位を含む正確なファイルを特定する方法はありますか?
どのデータベースファイルに、データベース内に存在するさまざまなHoBT(アラインされたものとアラインされていないもの)のどの割り当てユニットが含まれているかについて、詳細なビューを取得したいと考えていました。 ファイルグループごとに複数のデータファイルの作成を開始するまで、私が常に使用してきたクエリ(以下を参照)は役立ちました。 select SchemaName = sh.name, TableName = t.name, IndexName = i.name, PartitionNumber = p.partition_number, IndexID = i.index_id, IndexDataspaceID = i.data_space_id, AllocUnitDataspaceID = au.data_space_id, PartitionRows = p.rows from sys.allocation_units au join sys.partitions p on au.container_id = p.partition_id join sys.indexes i on i.object_id = p.object_id and i.index_id = p.index_id join sys.tables …

4
アプリケーションのユーザーごとに個別のデータベースアカウントを使用するのは良い習慣ですか?
私が使用しているアプリケーションはサーバーベースであり、多くのユーザーに対して1つのデータベースアカウントを使用します。アプリケーションコードは、ユーザーができることまたはシングルユーザーを制御します。 各ユーザーが独自のデータベースアカウントを必要とし、データベースサーバーが各ユーザーに許可および禁止すべきことに関するポリシールールの実施に依存している、成功した複雑なビジネスアプリケーションはありますか? 複数の人が1つのデータベースの情報に貢献し、他の人(たとえば、顧客レコードにすべてアクセスする必要がある組織内の同僚)が保存した情報にアクセスできるアプリケーションについて考えています。 このタイプのセットアップには名前もありますか?
13 security 

1
製品のバンドルを含む製品のデータベース設計
私は小売業向けのデータベースシステムを構築しています。私はいくつかのテーブルを設定しました: 製品 購入 売上高 残高 すべてが相互に接続され、在庫レベルを表示できます。 私が抱えている問題は、個々の価格とは異なる価格を持つ製品のバンドルも販売していることです。 例:オレンジを1ドルで、リンゴを1.2ドルで販売しています。フルーツパッケージ1(オレンジ2個とリンゴ2個)を3.8ドルで、パッケージ2(オレンジ4個とリンゴ4個)を7ドルで販売しています。 これらの製品バンドルの関係を作成する正しい方法はありますか? PS:私はこれを作成するFileMaker Proを使用しています。

2
MS SQL Serverでテーブル全体をロックしないようにSQLの挿入や更新を行う方法
DBの仕事を始めたばかりなので、基本的な質問に対する忍耐に感謝してください。ローカルマシンでSQL Server 2014を実行しています。小さなテーブルと、さまざまなアプローチをテストするための基本的なクライアントアプリケーションがあります。INSERT INTOand UPDATEステートメントの両方でテーブルロックのように見えるものを取得しています。クライアントは、次のコードを持つASP.NETアプリケーションです。 OleDbConnection cn = new OleDbConnection("Provider=SQLNCLI11; server=localhost\\SQLEXPRESS; Database=<my db>; user id=<my uid>; password=<my pwd>"); cn.Open(); OleDbTransaction tn = cn.BeginTransaction(); OleDbCommand cmd = new OleDbCommand("INSERT INTO LAYOUTSv2 (LAYOUTS_name_t, LAYOUTS_enabled_b, LAYOUTS_data_m) VALUES ('name', '-1', 'data')", cn, tn); cmd.ExecuteNonQuery(); cmd.CommandText = "SELECT SCOPE_IDENTITY()"; int newkey = Decimal.ToInt32((decimal)cmd.ExecuteScalar()); Console.WriteLine("Created index …

1
SQL Serverがこれらの統計のフルスキャン以外の更新を拒否するのはなぜですか?
毎日のデータウェアハウスビルドで、比較的長時間(20分以上)統計の自動更新操作が実行されていることに気付きました。関係するテーブルは CREATE TABLE [dbo].[factWebAnalytics]( [WebAnalyticsId] [bigint] IDENTITY(1,1) NOT NULL, [MarketKey] [int] NOT NULL CONSTRAINT [DF_factWebAnalytics_MarketKey] DEFAULT ((-1)), /*Other columns removed*/ CONSTRAINT [PK_factWebAnalytics] PRIMARY KEY CLUSTERED ( [MarketKey] ASC, [WebAnalyticsId] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [MarketKeyPS]([MarketKey]) ) ON …

4
既存のPKに自動インクリメントを追加する
別のDBに既に存在するDBにテーブルを作成しました。最初は古いDBデータが入力されていました。テーブルのPKは、それらのレコードに既に存在する値を受信する必要があったため、自動インクリメントすることはできませんでした。 ここで、PKを自動インクリメントとして使用する新しいテーブルが必要です。しかし、PKが既に存在し、データを取得した後、どうすればそれができますか?

2
差分バックアップを行うときにバッチ要求が増加するのはなぜですか
2012年のSQL Serverでのさまざまなアクティビティの長期追跡を開始しましたが、増分バックアップ中にバッチリクエストが増加していることに気付きました。 アイデアを提供するために、通常の日常的なバッチリクエストは1秒あたり約10〜20ですが、差分バックアップの実行中は1秒あたり100〜130に跳ね上がります。 私はこれがそれほど多くないことを知っていますが、それが何が起こっているのか興味がありました。 この問題のトラブルシューティングに役立つ情報がわからない。

2
突然のMongodbの高接続/キュー、データベースが応答を停止する
問題 mongodbのセットアップに奇妙な問題があります。時々、高接続と高キューのピークを取得し、キューと接続を増加させるとmongodbプロセスが応答を停止します。htopでsigkillを使用してインスタンスを再起動する必要があります。 ハードウェアリソースは問題ないため、mongodbの動作をブロックするシステム制限/ mongodb設定があるようです。この問題のバージョンはスタンドアロンで発生し、その後実稼働サーバーでレプリカセットが発生します。今後の詳細。 ソフトウェア環境について これはスタンドアロンのmongodbインスタンス(シャードでもレプリカセットでもない)であり、専用のマシン上で動作し、他のマシンによってクエリされます。Debian 7.7でmongodb-linux-x86_64-2.6.12を使用しています。 mongoを照会するマシンは、Django == 1.7.4、Mongoengine = 0.10.1 with pymongo == 2.8、nginx 1.6.2およびgunicorn 19.1.1を使用しています。 Django settings.pyファイルで、次の行を使用してデータベースに接続しています。 from mongoengine import connect connect( MONGO_DB, username = MONGO_USER, password = MONGO_PWD, host = MONGO_HOST, port = MONGO_PORT ) MMS統計 MMSサービスの次のimgでわかるように、接続とキューにピークがあります。 これが発生すると、mongodbプロセスが完全にフリーズします。SIGKILLを使用してmongodbを再起動する必要がありますが、これは非常に悪いことです。 画像には3つのフリーズイベントがあります。 imgが示すように、これが発生すると、非マップ仮想メモリにもピークがあります。 また、2番目と3番目のフリーズの前後でBtreeチャートの増加を発見しました。 ログを確認しましたが、疑わしいクエリはなく、Opcountersも急増しません。通常よりも多くのクエリはないようです。 同じバグの別の日時の別のスクリーンショットを次に示します。 すべてのケースで、DBのロックはそれほど増加しておらず、ピークがありますが、4%にも達していません。 OpCounterはゼロに低下し、すべてのopがmongodb quequeに送られるように見えるため、データベースは新しい接続を作成して新しい要求を実行しようとし、それらもすべてキューに送られます。 …

1
この拡張イベントXMLをできるだけ早く細断するにはどうすればよいですか?
SQL Server 2008 R2で拡張イベントセッションを作成しました。セッションが実行され、予想どおりにイベントが発生すると収集されます。 イベントが比較的少ないときにxmlを細断すると、パフォーマンスは許容範囲内になります。何千ものイベントがあるとき、xmlを細断処理す​​るのに時間がかかります。 私は何か間違ったことをしていることを知っています。XMLエンジンの内部について何を理解するのに十分な知識を持っていません。 これは私の拡張イベントセッションの定義です。 IF EXISTS ( SELECT 1 FROM sys.server_event_sessions dxs WHERE dxs.name = 'queries' ) BEGIN IF EXISTS ( SELECT 1 FROM sys.dm_xe_sessions dxs WHERE dxs.name = 'queries' ) BEGIN ALTER EVENT SESSION queries ON SERVER STATE = STOP; END DROP EVENT SESSION queries ON …

4
XACT_ABORTがONに設定されている場合、どのような場合にCATCHブロック内からトランザクションをコミットできますか?
とについてMSDNを読んTRY...CATCHでいXACT_STATEます。 構造XACT_STATEのCATCHブロックで使用してTRY…CATCHトランザクションをコミットするかロールバックするかを決定する次の例があります。 USE AdventureWorks2012; GO -- SET XACT_ABORT ON will render the transaction uncommittable -- when the constraint violation occurs. SET XACT_ABORT ON; BEGIN TRY BEGIN TRANSACTION; -- A FOREIGN KEY constraint exists on this table. This -- statement will generate a constraint violation error. DELETE FROM Production.Product WHERE ProductID …

2
コンピューター名にハイフンが含まれていてT-SQLエラーが発生する
私は開発者であり、DBAではありません(これは、私が恐れている)自宅のコンピューター(という名前のJohn-PC)でSQL Server 2014 Expressを使用してレポートビルダー3.0を実行しようとしていますが、レポートを実行できません。 私は偶然のユーザー/ログインコンボを作成user = John-PCしてlogin = John-PC\John。でエントリを削除しようとすると: Drop Login John-PC\John エラーが発生します: 「-」付近の構文が正しくありません。 問題は私のコンピューター名のハイフンだと思います。 構文エラーを回避する方法はありますか? ユーザーを変更またはドロップする別の方法はありますか(ドロップしようとしましsys.server_principalsたが、アドホックな変更ができないというエラーを受け取りました)。 どういうわけか、レポートビルダーに新しいユーザー/ログイン名を付けることはできますか? 上記のいずれでもない場合、コンピューターの名前を変更するJohn_PCことはできますか?

2
ブレントオザーのsp_BlitzIndexをAzureで実行するにはどうすればよいですか?
Brent OzarのWebサイトからSQL Server First Aid Kitをダウンロードしました。Azureデータベースサーバーレベルの管理者としてログインしているときに、Microsoft Sql Server Management Studioを介してmasterデータベースに対してsp_BlitzIndexスクリプトを実行しようとすると、次のエラーが発生しました。 メッセージ262、レベル14、状態18、プロシージャsp_BlitzIndex、行18 CREATE PROCEDURE権限がデータベース 'master'で拒否されました。 テストするデータベースインスタンスでプロシージャを正常に作成しました。プロシージャを実行すると、次のようなエラーが表示されました。 メッセージ50000、レベル16、状態1、行1265無効なオブジェクト名「mydatabase.sys.partitions」。 次に、巧妙にしようとし、ストアドプロシージャを作成せずにmasterデータベースに対して直接ストアドプロシージャコードを実行しようとすると、次のエラーが発生しました。 Msg 50000、レベル15、状態1、行1267 'mydatabase.sys.indexes'のデータベースおよび/またはサーバー名への参照は、このバージョンのSQL Serverではサポートされていません。 〜2700行のインデックスヒューリスティックロジックの内部動作をいじり始めるのに十分な自信がありません。このストアドプロシージャをAzure SQL Databaseで適切に動作させるための迅速かつ簡単な方法はありますか、それともインデックス分析ツール/ストアドプロシージャを他の場所で探す必要がありますか?

2
これら2つのSQL Serverロールバックはどのように異なりますか?
SQL Server 2008 R2では、これら2つのロールバックの違いは次のとおりです。 ALTER数分間ステートメントを実行し、「実行のキャンセル」を押します。完全にロールバックするには数分かかります。 同じALTERステートメントを実行しますが、これはLDFファイルが正常に完了するのに十分な大きさでないことを確認します。いったんLDF制限が満たされるとNO「自動拡張」が許されない、クエリの実行はすぐに停止します(またはロールバックが起こる)、このエラーメッセージが表示されて: The statement has been terminated. Msg 9002, Level 17, State 4, Line 1 The transaction log for database 'SampleDB' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases 次の点で、これら2つの違いは何ですか? 2番目の「ロールバック」が瞬時に行われるのはなぜですか?ロールバックと呼べるかどうかは完全にはわかりません。私の推測では、トランザクションログは実行の進行とともに書き込まれ、タスクを完全に完了するための十分なスペースがないことがわかると、コミットせずに「終了」メッセージで停止します。 最初のロールバックに非常に長い時間がかかるとどうなりますか(ロールバックはシングルスレッドです)。 2.1。SQL Serverは戻って、LDFファイルに作成されたエントリを元に戻しますか? 2.2。LDFファイルサイズは(からのロールバックの終わりに小さくなりますDBCC …

2
Setベースのアルゴリズム/ UDFを実装する方法
800K行38列のテーブルのすべての行に対して実行する必要があるアルゴリズムがあります。このアルゴリズムはVBAに実装されており、一部の列の値を使用して他の列を操作する一連の計算を実行します。 現在、Excel(ADO)を使用してSQLをクエリし、クライアント側カーソルでVBAを使用して、すべての行をループでアルゴリズムを適用しています。動作しますが、実行に7時間かかります。 VBAコードは非常に複雑であるため、T-SQLに再コーディングするのは非常に手間がかかります。 可能なルートとしてのCLR統合とUDFについて読みました。また、データベースに近づけるためにSSISスクリプトタスクにVBAコードを配置することも考えましたが、このタイプのパフォーマンスの問題に対する専門的な方法論が存在することは確かです。 理想的には、並列セットベースの方法で、できるだけ多くの行(すべて?)に対してアルゴリズムを実行できるようになります。 この種の問題で最高のパフォーマンスを得る方法に大きく依存するヘルプ。 -編集 コメントをありがとう、私はMS SQL 2014 Enterpriseを使用しています。詳細は次のとおりです。 このアルゴリズムは、時系列データの特性パターンを見つけます。アルゴリズム内の関数は、多項式の平滑化、ウィンドウ処理を実行し、入力基準に基づいて関心領域を見つけ、多数の値といくつかのブール結果を返します。 私の質問は、実際のアルゴリズムよりも方法論に関するものです。一度に多くの行で並列計算を実現したい場合、私のオプションは何ですか。 多くの作業が可能ですが、T-SQLへの再コード化が推奨されますが、アルゴリズム開発者はVBAで作業し、頻繁に変更されるため、T-SQLバージョンとの同期を保ち、すべてを再検証する必要があります変化する。 T-SQLはセットベースの関数を実装する唯一の方法ですか?

1
選択されたクエリにMySQLコミットデータが表示されない
コンテキスト:使用されるフレームワークはSpringであり、すべてのクエリはJdbcTemplateで実行されます。Mysqlサーバーのバージョンは5.6.19です。tableでありInnoDB table、デフォルトのようなauto commit分離レベル反復-読み取りが設定されていると。 問題:Insertトランザクション内で発生し、select挿入された同じデータを読み取ると、データが表示されません。select実行した後insertとした後、insertトランザクションが持ちますcommited。 mysqlでbinログと一般ログを有効にしました。以下の関連ログ bin-log: SET TIMESTAMP=1438265764/*!*/; BEGIN /*!*/; # at 249935389 #150730 14:16:04 server id 1 end_log_pos 249935606 CRC32 0xa6aca292 Query thread_id=40 exec_time=0 error_code=0 SET TIMESTAMP=1438265764/*!*/; insert into user_geo_loc_latest(user_id, lat, lng) values(x,y,z) on duplicate key update lat=y, lng=z /*!*/; # at 249935606 #150730 14:16:06 server id 1 end_log_pos …

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