データベース管理者

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

2
stats_column_idとindex_column_idは、クラスター化インデックスの物理的な順序が変更されても更新されません
列の目的を誤解していない限り、次のコードは、クラスター化インデックスの構造を変更stats_column_idしてもsys.stats_columns DMVの列の順序位置()が変更されないことを示しています。(AdventureWorks2014、AdventureWorks2008R2でテスト済み) select i.name, c.name, ic.column_id, ic.index_column_id from sys.indexes i join sys.index_columns ic on i.object_id = ic.object_id and i.index_id = ic.index_id join sys.columns c on i.object_id = c.object_id and ic.column_id = c.column_id where i.name = 'PK_BusinessEntityAddress_BusinessEntityID_AddressID_AddressTypeID' order by ic.key_ordinal; select sh.name,s.name, c.name, c.column_id, sc.column_id, sc.stats_column_id from sys.stats s join sys.stats_columns …


1
すべての列のデフォルト値を使用してテーブルに複数の行を挿入する方法はありますか?
RBARの方法で、すべての列にデフォルト値を持つ複数の行をテーブルに挿入できます。 create table course(course_id serial primary key); do $$ begin for i in 1..100000 loop insert into course default values; end loop; end;$$; 単一のSQLステートメントで同じことを行う方法はありますか?

2
PostgreSQL TRIGGERのスケーリング
Postgresがメカニズムのスケールをトリガーする方法 PostgreSQLを大規模にインストールしており、ログテーブルとTRIGGERを使用してイベントベースのシステムを実装しようとしています。 基本的に、UPDATE / INSERT / DELETE操作の通知を受け取る各テーブルにTRIGGERを作成します。このトリガーが起動されると、ログテーブルに新しい行を追加する(イベントをエンコードする)関数を実行し、その後、外部サービスからポーリングします。 Postgres TRIGGERを使用する前に、それらがどのようにスケーリングするかを知りたいと思います。単一のPostgresインストールでいくつのトリガーを作成できますか?クエリのパフォーマンスに影響しますか?これを試す前に誰かがしましたか?

3
自身を指すリンクサーバーの作成
servername\instancename次の呼び出しを使用して、SQL Server 2014インスタンスにリンクサーバーを作成しようとしています。 EXEC master.dbo.sp_addlinkedserver @server = N'servername\instancename', @srvproduct=N'SQL Server' エラーが発生しています: Msg 15028, Level 16, State 1, Procedure sp_addlinkedserver, Line 82 The server 'servername\instancename' already exists. これはSQL Server 2005で正常に機能し、MSDNによると、 リンクサーバーはSQL Serverの別のインスタンスである必要はありませんが、 そのため、これを許可しない最近のバージョンで何が変更されたのかわかりません。UIを使用すると、同様のメッセージが生成されます。 ローカルSQL Serverをリンクサーバーとして作成することはできません。 リクエストするのは奇妙なことだと理解していますが、2005年に機能した(かつては別のインスタンスにあった)レガシーコードをサポートすることです。ドキュメントには、動作するはずであると記載されていますが、動作しません。2014年にこれを機能させる方法はありますか、それとも基になるコードを変更する必要がありますか?

2
NVARCHAR(MAX)を圧縮する別の方法は?
NVARCHAR(MAX)フィールドを持ついくつかのテーブルを圧縮しようとしています。あいにく、圧縮rowとpage圧縮には希望の影響はありません(20 GBのテーブルに対して保存されるのは〜100/200 MBのみです)。また、列ストアおよび列ストアのアーカイブ圧縮は、NVARCHAR(MAX)フィールドの圧縮をサポートしていないため、適用できません。 ここに他の選択肢があるかどうかは誰にもわかりますか? また、列の内容は一意であるため、rowand page圧縮は効果がないと思いNVARCHAR(MAX)ます。

2
特定の特殊文字のISNUMERICの背後にあるロジックは何ですか?
このISNUMERIC関数には予期しない動作があります。MSDNドキュメントには次のように書かれています。 ISNUMERIC入力式が有効な数値データ型に評価されると1を返します。有効な数値データ型には、int、bigint、smallint、tinyint、decimal、numeric、money、smallmoney、float、realが含まれます。 また、脚注もあります。 ISNUMERICプラス(+)、マイナス(-)などの数字ではない一部の文字、およびドル記号($)などの有効な通貨記号に対して1を返します。通貨記号の完全なリストについては、「money and smallmoney(Transact-SQL)」を参照してください。 わかりましたので+、-、と記載されている通貨記号は、数値と見なされることが期待されます。ここまでは順調ですね。 奇妙な部分です。まず、リンクされた記事の通貨記号の一部は数値ではありません。 ユーロ通貨記号、16進数20A0: ₠ ナイラサイン、ヘックス20A6: ₦ リアルサイン、16進FDFC: ﷼ これは奇妙で、なぜなのかわかりませんか?このバージョンまたは環境に依存していますか? しかし、物事は奇妙になります。私が説明できない他のいくつかはここにあります: /数値ではありませんが、\です(ハァッ!!) REPLICATE(N'9', 308)数値ですが、そうでREPLICATE(N'9', 309)はありません 最初の最も基本的な質問は、上記のケースを説明するものは何ですか?さらに重要なことですが、背後ISNUMERICにあるロジックは何ですか?したがって、すべてのケースを自分で説明/予測できますか? 物を再現する良い方法は次のとおりです。 DECLARE @tbl TABLE(txt NVARCHAR(1000)); INSERT INTO @tbl (txt) VALUES (N''), (N' '), (N'€'), (N'$'), (N'$$'), (NCHAR(8356)), (NCHAR(8352)), (NCHAR(8358)), (NCHAR(65020)), (N'+'), (N'-'), (N'/'), (N'\'), (N'_'), (N'e'), (N'1e'), (N'e1'), (N'1e1'), …

2
MySQLのトランザクションログとREDOログの違い
MySQLについて読んだことがあります。私の意見では、2つのログタイプは非常に似ていると思います。MySQLは、データがログで変更される方法とタイミングを保存します。情報はMySQLの回復に使用されます。2つのログタイプの機能を混同しています。

2
インデックス付き日時列を使用したMySQLパフォーマンスの問題
次の問題を約1時間解決しようとしましたが、それでも解決できませんでした。 さて、テーブルがあります(MyISAM): +---------+-------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+-------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | http | smallint(3) | YES | MUL | 200 | | | elapsed | float(6,3) | NO | | …


2
複数の列を選択し、1つだけグループ化する方法は?
に問題がgroup byあります。複数の列を選択しますが、1つの列のみでグループ化します。以下のクエリは私が試したものですが、エラーが発生しました。 SELECT Rls.RoleName,Pro.[FirstName],Pro.[LastName],Count(UR.[RoleId]) as [Count] from [b.website-sitecore-core].[dbo].[aspnet_UsersInRoles] UR inner join [b.website-professional-au].[dbo].[Profile] Pro on UR.UserId = Pro.Id inner join [b.website-sitecore-core].[dbo].[aspnet_Roles] Rls on Rls.RoleId = UR.RoleId inner join [b.website-professional-au].[dbo].[Gender] Gn on gn.Id = pro.GenderId GROUP BY Rls.RoleName;

1
ロールdb_ownerで許可されること
SQL Server 2012データベースの特定のテーブルを表示できないログインのトラブルシューティングを試みました。そうすることで、私はそのdb_owner役割のメンバーシップが許可するものをよく理解していないことがわかります。などの他の役割を理解db_datareader and db_datawriterすることdb_ownerはできますが、何が許可されるかについては混乱したままです。

1
SQL Server 2012で仮想アカウントではなく管理されたサービスアカウントを使用する理由は何ですか?
SQL Server 2012のでは、サービスアカウントは、次のように作成された仮想口座説明するように、(VAS)ここでは対照的に、管理されたサービスアカウント(MSAは)。 説明に基づいて、これらについて見られる重要な違い: MSAはドメインアカウント、VAはローカルアカウントです MSAはADによって処理される自動マジックパスワード管理を使用し、VAにはパスワードがありません Kerberosコンテキストでは、MSAはSPNを自動的に登録しますが、VAは 他に違いはありますか?Kerberosが使用されていない場合、DBAがMSAを好むのはなぜですか? 更新:別のユーザーは、VAに関するMSドキュメントの矛盾の可能性に気付きました: 仮想アカウントは自動管理されており、仮想アカウントはドメイン環境のネットワークにアクセスできます。 対 仮想アカウントは、リモートロケーションに対して認証できません。すべての仮想アカウントは、マシンアカウントの権限を使用します。次の形式でマシンアカウントをプロビジョニングします <domain_name>\<computer_name>$。 「マシンアカウント」とは何ですか?どのように/いつ/なぜ「プロビジョニング」されますか?「ドメイン環境でネットワークにアクセスする」と「(ドメイン環境で)リモートロケーションに認証する」の違いは何ですか?

1
NULL可能複合インデックスで範囲シークを再結合しますか?
次のスキーマとサンプルデータの場合 CREATE TABLE T ( A INT NULL, B INT NOT NULL IDENTITY, C CHAR(8000) NULL, UNIQUE CLUSTERED (A, B) ) INSERT INTO T (A) SELECT NULLIF(( ( ROW_NUMBER() OVER (ORDER BY @@SPID) - 1 ) / 1003 ), 0) FROM master..spt_values アプリケーションは、このテーブルの行をクラスター化インデックスの順序で1,000行のチャンクで処理しています。 最初の1,000行は、次のクエリから取得されます。 SELECT TOP 1000 * FROM T …
14 sql-server  index 

1
「エラー:重複キー値が一意制約に違反する」を回避するためにテーブル構造を修正する
この方法で作成されたテーブルがあります: -- -- Table: #__content -- CREATE TABLE "jos_content" ( "id" serial NOT NULL, "asset_id" bigint DEFAULT 0 NOT NULL, ... "xreference" varchar(50) DEFAULT '' NOT NULL, PRIMARY KEY ("id") ); その後、IDを指定していくつかの行が挿入されます。 INSERT INTO "jos_content" VALUES (1,36,'About',...) 後で、IDなしでいくつかのレコードが挿入され、エラーで失敗します: Error: duplicate key value violates unique constraint。 どうやらidはシーケンスとして定義されました: 挿入に失敗するたびに、存在しない値に増分し、クエリが成功するまで、シーケンス内のポインターが増加します。 SELECT nextval('jos_content_id_seq'::regclass) テーブル定義の何が問題になっていますか?これを修正するスマートな方法は何ですか?

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