タグ付けされた質問 「sql-server」

Microsoft SQL Serverのすべてのバージョン(MySQL以外)。sql-server-2016のようなバージョン固有のタグも追加してください。これは、質問に関連することが多いためです。

2
バッファプール外のSQL Server 2012メモリ消費
SQL Server 2012 SP2 Enterprise Editionのインスタンスを使用しており、最大よりも20 GB高いメモリを消費しています。メモリ制限。インスタンスは65GBに制限されていますが、以下のクエリで使用中の物理メモリは86GBを示しています SELECT (physical_memory_in_use_kb/1024)/1024 AS [PhysicalMemInUseGB] FROM sys.dm_os_process_memory; GO サーバーは2つのNUMAノードを持つ物理的なものです。バッファプールの外でメモリを消費しているものを見つける方法はありますか(それが起こっていると想定しています)? DBCC MEMORYSTATUSの出力は次のとおりです。 そして、ここに設定されたメモリ制限があります:- 前もって感謝します。 更新:-アーロンが提案したクエリを実行しました SELECT TOP (20) * FROM sys.dm_os_memory_clerks ORDER BY pages_kb DESC これが出力です:- pages_kbの合計は最大60GBになります UPDATE 2: - DBCC MEMORYSTATUSの全出力はここにある: - http://pastebin.com/nGn6kXEc UPDATE 3: -ここでは、Excelファイル内Shankyのスクリプトの出力: - http://jmp.sh/LKRlH4K 更新4:-出力のスクリーンショット:- SELECT (physical_memory_in_use_kb/1024)/1024 AS [PhysicalMemInUseGB] FROM …

2
SQL Server 2008 R2でデータベースメールを介してフォーマットされたHTMLメールを送信する必要がある
私の要件は、自動メールを(データベースメール経由のフォーマット済みHTMLメール)として作成することです。ジョブがトリガーされると、データがテーブルに挿入され、その情報がメールとして送信されるようにスケジュールされています。しかし今クライアントはこのフォーマットで要求しました。 私が行った現在のフォーマット PO Date:2014-11-26 PO ID:PO1 SAP Ref:0001106102 GRN:1067 DealerID:045 Dealer Name:ABC(Pvt)Ltd. 2 Status:New フォーマットのようなテーブルでクライアントからリクエストされたフォーマット PO Date |PO ID| SAP Ref| GRN|DealerID|Dealer Name|Status これは、データをEmail_Table(_ERROR_MAIL)に挿入するために使用するSQLクエリであり、これは要件に応じて必要とされます IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'ImpCancelledGRN') BEGIN DROP PROCEDURE [dbo].[ImpCancelledGRN] END GO CREATE PROCEDURE [dbo].[ImpCancelledGRN] WITH ENCRYPTION AS …


1
SQL Serverの「強制暗号化」と「強制プロトコル暗号化」
さまざまな設定がサーバーとクライアントの通信の動作にどのように影響するかを理解しようとしています。サーバーに、SQLサービスで使用するように構成された発行済みの交換証明書を持つ自己署名CAをインストールしました。 最初に、ルートCAがクライアントにインストールされていないときに、この接続が失敗することを確認します。しかし、私が何をしてもそれはとにかくうまくいくようです。 理由をよりよく理解するために、私はすべてのオプションとそれらが生み出すべき効果をリストアップしようとしています。しかし、私がそれを正しく理解したかどうかはわかりません... 誰かがここで不足している部分を修正して記入するのを手伝ってくれますか? SQL Serverで「暗号化を強制する」設定を有効にする場合: 実際には、これはEncrypt=True;TrustServerCertificate=True;私の接続文字列の設定と同じです。クライアントは、暗号化を使用する必要があるかどうか、およびサーバーを信頼する必要があるかどうかについては何も言いません。 このオプションは、個々のサービスインスタンスを暗号化するために使用できます。 CAなしの自己署名交換証明書をサポートします。 SQL Serverで「プロトコル暗号化を強制する」設定を有効にする場合: サーバー上のすべてのサービスへのすべてのクライアント接続は暗号化されます。 クライアントとサーバーの両方で使用できる信頼できるCAによって発行された交換証明書が必要です。 クライアントで「プロトコル暗号化を強制する」設定を使用する場合: この単一のクライアントはSSLの使用を強制し、このマシンで利用可能な信頼できるCAによって発行された交換証明書が必要です。これがないと、この接続は失敗します。 サーバーとクライアントの両方で「プロトコル暗号化を強制する」設定を有効にする場合: これは推奨されません。しかし、なぜ?何が起こり、何が失敗しますか? サーバーで「強制暗号化」と「強制プロトコル暗号化」の両方を有効にする場合: これは何をもたらすのでしょうか?Force Protocol Encryptionが有効になっているときにForce Encryptionが何に設定されているかは重要ですか?

2
Transact-SQLでの対称差分演算?
私はいつもについて知られているUNIONSQLでのオペレータが、ごく最近、他の集合演算子があったことを発見し、INTERSECTそしてEXCEPT。4番目の大きな集合演算子である対称差(たとえば、の逆INTERSECT)を行う演算子を見つけることができませんでした。 私は次のようなものを使用して目的の出力を取得できるようです SELECT Field FROM A UNION SELECT Field FROM B EXCEPT SELECT Field FROM A INTERSECT SELECT Field FROM B (私が優先権を正しく持っていると仮定して)、または反完全結合を実行することによって: SELECT A.Field, B.Field FROM A FULL JOIN B ON B.Id = A.Id WHERE B.Id IS NULL OR A.Id IS NULL しかし、これらはどちらも、特に他の3つの基本的な集合演算と比較して、かなり集中的なクエリのように見えます。SQLに対称差分演算はありますか?ドキュメントでそれを見つけることができませんか?それとも、T-SQLに実装する「標準的な」方法はありますか?
10 sql-server  t-sql 

2
列を動的にエイリアスするにはどうすればよいですか?
可変名の列が20あるテーブル(私が設計したものではない)があります。つまり、表示しているレコードのタイプに応じて、該当する列の名前が変わる可能性があります。 可能な列名は別のテーブルに格納されているため、非常に簡単にクエリできます。 したがって、私が本当に探しているクエリは次のようになります。 SELECT Col1 AS (SELECT ColName FROM Names WHERE ColNum = 1 and Type = @Type), Col2 AS (SELECT ColName FROM Names WHERE ColNum = 2 and Type = @Type) FROM Tbl1 WHERE Type = @Type 明らかにそれはうまくいかないので、どうすれば同様の結果を得ることができますか? ' クエリ文字列を作成してEXECUTEing しようとしましたが、「Command(s)Completed Successfully」が返され、行セットが返されないようです。 不正なクエリを使用して動的SQLを作成していたため、空の文字列が作成されたことがわかりました。SQL Serverは空の文字列を正しく実行しました。 列名を単にハードコーディングするのではなく、これを実行する必要がある理由は、列名がユーザーが構成できるためです。

4
暗号化された/暗号化されたデータを持つSQL Server 2008 R2のすべての列をすばやく見つける方法はありますか?
暗号化された/暗号化されたデータを持つSQL Server 2008 R2のすべての列をすばやく見つける方法はありますか? 開発サーバーの暗号化されたすべての列のデータを(ビジネスルールに従って)無効にする必要があります。私は定期的に使用しているため、ほとんどの列を知っていますが、徹底し、すべての列が見つかったことを証明できるようにしたいと考えています。 私はWebを検索し、INFORMATION_SCHEMAを調べて、有用だと思われるDMVとsys.columnsとsys.objectsを確認しましたが、今のところうまくいきません。

3
SSRSレポートで行を非表示にする方法は?
SSRS 2008で合計割り当てと両方の列の合計コストが0であるレポートでこれらの行を非表示にするにはどうすればよいかを理解しようとしています。 例えば: 総配分総実費 0 0 <----非表示 100,00 0 <----隠さない 0 50,0000 <----隠さない これがスクリーンショットです: ありがとうございました

3
シーケンスを使用する列を持つテーブルを作成するにはどうすればよいですか?
私は以下を持っています CREATE TABLE [MyTable] ( [ID] [bigint] PRIMARY KEY NOT NULL, [Title] [nvarchar](64) NOT NULL ) CREATE SEQUENCE MyTableID START WITH 1 INCREMENT BY 1 NO CACHE ; GO MyTableに新しいレコードを挿入し、IDをシーケンスの次の値に設定します。どうすればできますか?おそらくトリガー、または他の方法がありますか?どうやって? SQL Server 2012 を使用しているため、ギャップバグのため、Identityを使用したくありません。

1
OUTER JOIN内にネストされたINNER JOINの構文とクエリ結果
TLDR; 2つの実行プランを見ると、どちらが良いのか簡単な答えはありますか?意図的にインデックスを作成しなかったので、何が起こっているのかを簡単に確認できます。 異なる結合スタイル(つまり、ネストされたものと従来のもの)の間のクエリパフォーマンスの違いを発見した私の以前の質問をフォローアップして、ネストされた構文もクエリの動作を変更することに気付きました。次の2つのクエリについて考えます。 SELECT a.*, m.*, n.* FROM dbo.Autos a LEFT JOIN dbo.Models m JOIN dbo.Manufacturers n -- <-- Nested INNER JOIN ON n.ManufacturerID = m.ManufacturerID ON m.ModelID = a.ModelID これは、Modelsテーブルにない ModelIDを持つ自動行を含めるために、製造元を結合する必要はありません。 従来の構文を使用して、結合をManufacturesから外部結合に変更する必要があります。ただし、これによりクエリプランが変更されます。 SELECT a.*, m.*, n.* FROM dbo.Autos a LEFT JOIN dbo.Models m ON m.ModelID = a.ModelID LEFT JOIN …

2
データベースのプロパティダイアログボックスの[ファイル]ページからデータベースの所有権を変更するとエラーが発生する
データベースを復元し、db_ownerとして新しいユーザー(ログイン元と同じユーザー)を作成しました。データベースダイアグラムを表示したいときにエラーが発生しました このデータベースには有効な所有者がいないため、データベースダイアグラムサポートオブジェクトをインストールできません。続行するには、まず[データベースのプロパティ]ダイアログボックスの[ファイル]ページまたは[承認の変更]ステートメントを使用して、データベース所有者を有効なログインに設定し、次にデータベースサポートオブジェクトを追加します データベースプロパティの[ファイル]ページから所有権を変更しようとすると、次のようなエラーが発生します。 データベース 'ABC'の所有者の設定に失敗しました。(Microsoft.SqlServer.SMO)追加情報:SMOで例外が発生しました提案された新しいデータベース所有者James-PC \ Jamesは、ユーザーJamesとしてこのデータベースにマップされています。パラメータ名:James-PC \ James " 別のシステムからデータベースのバックアップを復元した後、このコンピューターでデータベースダイアグラムを表示できるように、問題を修正してください。

2
複数日にわたるDBCC CHECKDBの分割
Paul Randal がDBCC CHECKDBを手動で数日間に渡って分散する、非常に大規模なデータベースの実装に取り​​組んでいます。 データベース内のテーブルを7つのバケット間でほぼ均等に分割する 週2回のDBCC CHECKALLOCの実行 週に1回、DBCC CHECKCATALOGを実行する 曜日ごとに1つのバケットでDBCC CHECKTABLEを実行する 誰かがこのテクニックを使用しましたか?既存のスクリプトはありますか? これが実際にCHECKDBが行うすべてをカバーしていないのではないかと心配しています。CHECKDBのBooks Onlineドキュメントでは、CHECKALLOC、CHECKCATALOG、およびCHECKTABLEに加えて、次のことも述べられています。 データベース内のすべてのインデックス付きビューの内容を検証します。 FILESTREAMを使用してファイルシステムにvarbinary(max)データを格納するときに、テーブルメタデータとファイルシステムディレクトリおよびファイルの間のリンクレベルの整合性を検証します。(SQL 2008のみ) データベース内のService Brokerデータを検証します。 だからここに私の質問があります: これらの追加のチェックは必要ですか/重要ですか?(インデックス付きビューは、おそらく私にとっては少し心配です。まだService BrokerやFILESTREAMを使用しているとは思いません。) もしそうなら、これらの追加のチェックを個別に実行する方法はありますか? CHECKALLOCとCHECKCATALOGは、大きなdbでも非常に高速に実行されるようです。これらを毎日実行しない理由はありますか? (注:これは、数百のサーバーにわたる数千の既存のデータベース、または少なくとも特定のサイズを超えるすべてのデータベースの標準ルーチンになります。つまり、CHECKFILEGROUPを使用するようにすべてのデータベースを再構築するようなオプションは、実際には実用的ではありません。)

3
テーブルの行と一致しない値の特定
クエリで指定された一意の識別子のうち、テーブルに存在しない一意の識別子を簡単に確認できるようにしたいと思います。 よりよく説明するために、リスト「1、2、3、4」のどのIDがテーブルに存在しないかを確認するために、私が今行うことは次のとおりです。 SELECT * FROM dbo."TABLE" WHERE "ID" IN ('1','2','3','4')、テーブルにID 2の行が含まれていないとしましょう。 結果をExcelにダンプする 結果リストの各リスト値を検索する元のリストでVLOOKUPを実行します。 結果となるVLOOKUP #N/Aは、テーブルで発生しなかった値になります。 これを行うにはもっと良い方法があるはずだと思います。私は理想的には次のようなものを探しています チェックするリスト->チェックするテーブルにクエリ->テーブルにないリストのメンバー

2
時間データ型に分を追加するにはどうすればよいですか?
2つのレコードをテーブルに挿入するストアドプロシージャがあります。レコード間の違いは、2番目のレコードの時間列が@MinToAdd最初のレコードの後であることです。 CREATE PROCEDURE CreateEntry /*Other columns*/ @StartTime time(2), @EndTime time(2), @MinutesToAdd smallint AS BEGIN SET NOCOUNT ON; SET @MinutesToAdd = @MinutesToAdd % 1440; --Prevent overflow if needed? IF (@MinutesToAdd > 0) BEGIN INSERT INTO ClientNotification (/*Other columns*/ startTime, endTime) OUTPUT inserted.id VALUES (/*Other columns*/ @StartTime, @EndTime), (/*Other columns*/ @StartTime + …

3
SQL Serverデータベースシャーディング-一般的なデータ/シャーディングされていないデータをどうするか
非常に大規模なエンタープライズレベルのデータベースがあります。私たちのビジネスモデルの一部として、すべてのWebユーザーが毎月同時にWebサーバーにアクセスし、それがSQLボックスに影響を与えています。トラフィックは非常に重く、会社が大きくなるほど大きくなります。sql proc最適化が実行され、ハードウェアはすでに非常に高いレベルに拡張されています。 現在、データベースを分割して、会社の成長と将来の負荷に対応できるようにしています。 どの特定のデータをシャーディングするかを決定しました。これは、高度に利用されているデータベースのサブセットです。 しかし、私の質問は、一般的/普遍的な非分割データに関するものです。このようなデータの例としては、たとえばInventoryテーブルや、おそらくEmployeeテーブル、userテーブルなどがあります。 この共通/普遍的なデータを処理する2つのオプションが表示されます。 1)設計1-共通/汎用データを外部データベースに配置します。すべての書き込みはここで行われます。その後、このデータは各シャードに複製され、各シャードがこのデータを読み取り、t-sql procでこのデータに内部結合することができます。 2)デザイン2-各シャードに、すべての共通/ユニバーサルデータの独自のコピーを提供します。各シャードがこれらのテーブルにローカルに書き込み、SQLマージレプリケーションを利用して、他のすべてのシャードでこのデータを更新/同期します。 設計に関する懸念#1 1)トランザクションの問題:シャードでデータを書き込んだり更新したりしてから、たとえば1つのストアドプロシージャで共通/ユニバーサルテーブルを書き込んだり更新したりする必要がある場合、これを簡単に行うことはできなくなります。現在、データは別個のSQLインスタンスとデータベースに存在しています。これらの書き込みは別のデータベースにあるため、トランザクションにラップできるかどうかを確認するために、MS DTSを使用する必要がある場合があります。ここではパフォーマンスが問題であり、シャーディングされた一般的なデータに書き込むプロシージャの場合、書き換えが発生する可能性があります。 2)参照整合性の喪失。データベース間の参照整合性を行うことはできません。 3)システムの広い領域を再コード化して、共通データを新しいユニバーサルデータベースに書き込み、共通データをシャードから読み取るようにします。 4)。データベーストリップの増加。上記の#1のように、シャーディングされたデータと共通データを更新する必要がある状況に遭遇した場合、データが別のデータベースにあるため、これを達成するために複数のラウンドトリップを実行することになります。ここでは多少のネットワーク遅延が発生しますが、この問題については上記3ほど心配していません。 設計に関する懸念#2 デザイン#2では、各シャードがすべての共通/ユニバーサルデータの独自のインスタンスを取得します。これは、一般的なデータに参加または更新するすべてのコードが、今日と同じように引き続き機能/実行されることを意味します。開発チームが必要とする再コーディング/書き換えはほとんどありません。ただし、この設計はすべてのシャード間でデータの同期を維持するためにマージレプリケーションに完全に依存しています。dbasは非常に熟練しており、マージレプリケーションがこれを処理できない可能性があり、マージレプリケーションが失敗した場合に非常に懸念しています。 デザインオプション#2を使用した人がいるかどうか知りたいです。また、表示されていない3番目または4番目のデザインオプションを見落としているかどうかも知りたいです。 前もって感謝します。
10 sql-server 

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