データベース管理者

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

3
並列実行のためにスカラー関数をTVF関数に変換-引き続きシリアルモードで実行
の私のクエリの1つは、リリース後にシリアル実行モードで実行されていましたが、アプリケーションから生成されたLINQ to SQLクエリで参照されるビューで2つの新しい関数が使用されていることに気付きました。そのため、これらのSCALAR関数をTVF関数に変換しましたが、クエリはシリアルモードで実行されています。 以前、他のいくつかのクエリでスカラーからTVFへの変換を実行し、強制的なシリアル実行の問題を解決しました。 これがスカラー関数です: CREATE FUNCTION [dbo].[FindEventReviewDueDate] ( @EventNumber VARCHAR(20), @EventID VARCHAR(25), @EventIDDate BIT ) RETURNS DateTime AS BEGIN DECLARE @CurrentEventStatus VARCHAR(20) DECLARE @EventDateTime DateTime DECLARE @ReviewDueDate DateTime SELECT @CurrentEventStatus = (SELECT cis.EventStatus FROM CurrentEventStatus cis INNER JOIN Event1 r WITH (NOLOCK) ON (cis.Event1Id = r.Id) WHERE (r.EventNumber = …

5
SSMSを介した特定のログインへのSQL Serverへのアクセスを拒否し、.Net SqlClientデータプロバイダーを介して許可する方法
開発者にUPDATE権限がない状況がありますが、開発者はアプリケーションを操作して接続文字列を表示します-> SQLLogin1UPDATE権限を持ついくつかのSQLアカウント(例)からのパスワードを知っています。私たちの操作は現在完璧ではなく、時々本番データを変更する必要があります(まだGUIがありません)。 DBAに連絡してデータを変更するように求める代わりに、開発者は(不適切に)SQLアカウントSQLLogin1(データを変更する権限を持つ)を使用し、SQL Server Management Studioを介して接続してデータを変更します。 SQLLogin1を使用するアプリケーション接続文字列SQLLogin1はDeveloperによって維持されるため、DBA は新しい接続文字列と新しいパスワードを表示しない限り、パスワードを変更できません。 質問: SQLLogin1SQLログインへのアクセスを拒否する方法はありますが、SSMS経由で接続している場合に限られますか? 同時に(で)SQLLogin1接続している場合は、ログインを許可する必要があります。.Net SqlClient Data Providerprogram_namesys.dm_exec_sessions この方法ではSQLLogin1、を使用しているアプリケーションSQLLogin1は引き続き接続できますが、開発者にを使用してSSMS経由で接続させないようにします。

4
このSQLステートメントで二重内部結合を使用する理由は何ですか?
このレガシーSQLクエリを見ています。取得できないビットは、同じ列で同じテーブルを2回内部結合している理由です。Table1とTable1がエイリアス "Table1Alias"で結合されていることについて話している、 SELECT DISTINCT othercolumns, Table1Alias.columna FROM maintable INNER JOIN secondarytable ON maintable.id1 = secondarytable.a_id1 INNER JOIN table1 ON secondarytable.id2 = table1.id3 INNER JOIN table1 Table1Alias ON secondarytable.id2 = Table1Alias.id3 INNER JOIN thirdtable ON table1.id4 = thirdtable.id5 INNER JOIN fourthtable ON thirdtable.id6 = fourthtable.id7 INNER JOIN fivetable ON thirdtable.id8 = …
10 sql-server 

2
共用体が整数を天井にキャストする際の問題(10進数)
私はこのシナリオを持っています。MySQLが最大の10進数値を取り、他の値をそれにキャストしようとしているようです。 問題は、このクエリが外部ライブラリによって生成されるため、少なくともこのレベルでは、このコードを制御できません。これを修正する方法を知っていますか? SELECT 20 AS x UNION SELECT null UNION SELECT 2.2; +------+ | x | +------+ | 9.9 | -- why from 20 to 9.9 | NULL | | 2.2 | +------+ 期待される結果 +------+ | x | +------+ | 20 | -- or 20.0, doesn't matter really in my …

2
大規模な削除クエリがフリーズしているようです
18億行のデータベースで削除クエリを実行しました。この削除により、12億行が削除されます。 後から考えて、このクエリを一度に100mに分割したはずですが、24時間実行されていて、ログファイルがログファイルに許可されている最大サイズである2Tbの位置にいます。 データベースは単純復旧モードです。 このクエリを保存するものはありますか?または、SQL Serverを再起動して何が起こるかを確認する必要がありますか?データベースは使用できなくなりますか?これをできるだけきれいに殺すために私たちにできることはありますか?

3
nullにできないフィールドに対してPostgreSQLでNOT NULLを指定しないことの結果は何ですか?
私はアプリケーションを持っています(データはPostgreSQLに格納されています)。テーブルのフィールドの大部分は常にnullではありませんが、これらのテーブルのスキーマはこれを強制しません。たとえば、次の偽のテーブルを見てください。 CREATE TABLE "tbl" ( "id" serial, "name" varchar(40), "num" int, "time" timestamp PRIMARY KEY ("id"), UNIQUE ("id") ); またname、num、time明示的として記載されていないNOT NULL彼らが実際に執行はアプリケーション側で起こるので、。 私の感覚では、それを変更する必要があると感じていますが、反対に、アプリケーションレベルでは、null値がここに表示されないようにし、他の誰も手動でテーブルを変更しないようにします。 私の質問は次のとおりです。明示的なNOT NULL制約? 私たちは適切なコードレビュープロセスと適度に優れたドキュメントを持っているので、新しい人がこの制約を破る何かをコミットする可能性は、変更を正当化するには実際には十分ではありません。 これは私の決定ではないので、これがまさに私が他の正当化を求めている理由です。私の意見では、何かがnullになり得ず、データベースで何かがnullでないことを指定できる場合、それを行うだけです。特に変更が非常に簡単な場合。


1
PostgreSQLのログアクティビティで特定のユーザーを除外することはできますか?
データベースでユーザーのアクティビティを監視する必要があります。で次のパラメータを設定しましたpostgresql.conf: log_min_duration_statement = 0 log_connections = on log_disconnections = on log_line_prefix = '%t %a %d %h %u |' ただし、ほとんどのログファイルは、postgresユーザーが実行したステートメントで満たされていることを理解しています。これは、メンテナンスタスク用に作成したスクリプトで使用されます。サイズが12 MBを超えるログファイル。 特定のユーザーのアクティビティをログから除外する方法はありますか?
10 postgresql  log 

2
結合されたテーブルの列によるソートを最適化する方法はありますか?
これは私の遅いクエリです: SELECT `products_counts`.`cid` FROM `products_counts` `products_counts` LEFT OUTER JOIN `products` `products` ON ( `products_counts`.`product_id` = `products`.`id` ) LEFT OUTER JOIN `trademarks` `trademark` ON ( `products`.`trademark_id` = `trademark`.`id` ) LEFT OUTER JOIN `suppliers` `supplier` ON ( `products_counts`.`supplier_id` = `supplier`.`id` ) WHERE `products_counts`.product_id IN (159, 572, 1075, 1102, 1145, 1162, 1660, 2355, …
10 mysql  order-by 

3
SQL ServerおよびNUMAのRAMを構成する
偶発的なDB管理者はこちら。 質問: そのサーバーの唯一の目的がSQL Serverデータベースエンジンのみを提供することである場合でも、SQL Serverの最大RAMを手動で制限しますか? 32GB RAMを搭載したMicrosoft Windows 2012 R2 Server、SQL Server 2012 Stdを使用しています。 管理者は常にSQL Serverにログインして、そのコンソールとすべてを使用します。 次に、このWindowsサーバーでNUMAが有効になっているかどうかをどのように確認しますか?

2
SQL Server 2008 R2パーティショニング-同じファイルグループ、1つのファイル、2つのpartition_numbers-ヘルプ
SQL Serverでのパーティション分割は初めてです。BrentOzarのガイドから学びました。 数回、奇妙なシナリオに遭遇しました。私が走るとき: SELECT * FROM ph.FileGroupDetail ORDER BY partition_number Go 2つの異なるpartition_numbersで2回表示されている同じファイルグループがあり、1つは範囲値で最後に正しく、もう1つはnullのrange_valueで最初にあります。 画像を拡大するにはここをクリック いくつかの質問: これはどのように起こっていますか?どこで間違っていますか? どうすれば問題を解決できますか?つまり、最初に空のパーティションが既にあるので、それを最初に取り除く方法です。 ファイル(空の場合は機能していました)とファイルグループを削除しようとしましたが、ファイルグループは削除できないと述べました。 誰かがこれがどのように起こったのか、そしてパーティション2のエントリを取り除く方法を説明してくれませんか?

1
データでマテリアライズドビューをバックアップおよび復元することは可能ですか?
マテリアライズドビューを計算するのが難しい場合がありますが、再計算ではなく、実際に保存されたデータを使用してバックアップおよび復元できるようにしたいと考えています。 PostgreSQL 9.4では可能ですか? (代わりの方法は、実際のテーブルを作成することですが、「更新」するのが困難です)

2
クラスタ化インデックスが使用されている場合、「行外」フィールドは読み取られますか?
VARCHAR(MAX)/NVARCHAR(MAX)列を使用するとデータが格納されることを知っています。out of the rowデータ行には、「大きな値」が格納されている別の場所へのポインターがあります。 次の質問があります。 各フィールドは格納されout of the rowていmaxますか、それとも1つだけですか? clustered indexレコード全体を読み取るためにテーブルのを使用している場合、行から格納されているフィールドも読み取られますか? VARCHAR(MAX)またはNVARCHAR(MAX)は「大きな値の型」と見なされます。大きな値型は通常「行外」に格納されます。つまり...

6
予測されるデータベースの増加を見積もる
私は最近、DBA研修生としてSQL Server 2008を使い始めました。データベースのサイズを計算する必要がありますが、最近の数か月間のデータベースの成長と、今後12か月の予測される成長も予測します。 sp_spaceusedステートメントを使用して実際のサイズを計算できますが、他のすべてをどのように計算しますか?

1
SQL Server 2012:Security_error_ring_buffer_recorded:ImpersonateSecurityContext
私が管理しているいくつかのサーバーが、system_health XEセッションで多くのイベントを記録しています。 名前:security_error_ring_buffer_recorded api_name:ImpersonateSecurityContext calling_api_name:NLShimImpersonate error_code:5023 error_code 5023は(システムエラーコード)である必要があります。 ERROR_INVALID_STATE 5023 (0x139F) The group or resource is not in the correct state to perform the requested operation. イベントセキュリティログにもSQL Serverログにもログイン失敗イベントはありません。

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