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

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

2
既存のSQL Serverログインとユーザーのリスト
SQL ServerのGUIを使用して、定義されているログインとユーザーを確認できることは知っていますが、スクリプトを使用してこの確認をどのように行うことができるのか疑問に思っています。 以下のクエリを実行しましたが、Permission_levelを取得するためのマッピング方法がわからないPrincipal_idが表示されます。 SELECT * FROM Sys.login_token それでは、ログインとユーザーを許可レベルでリストできる組み込みストアドプロシージャはありますか? ありがとうございました。

4
数百万行の狭いテーブルでクエリのパフォーマンスを向上させることは可能ですか?
現在、クエリの完了に平均2500msかかっています。私のテーブルは非常に狭いですが、4,400万行あります。パフォーマンスを改善するためにどのようなオプションが必要ですか、またはこれは得られるほど良いですか? クエリ SELECT TOP 1000 * FROM [CIA_WIZ].[dbo].[Heartbeats] WHERE [DateEntered] BETWEEN '2011-08-30' and '2011-08-31'; テーブル CREATE TABLE [dbo].[Heartbeats]( [ID] [int] IDENTITY(1,1) NOT NULL, [DeviceID] [int] NOT NULL, [IsPUp] [bit] NOT NULL, [IsWebUp] [bit] NOT NULL, [IsPingUp] [bit] NOT NULL, [DateEntered] [datetime] NOT NULL, CONSTRAINT [PK_Heartbeats] PRIMARY KEY CLUSTERED ( [ID] …

3
SQL Server 2012で大量のSQLクエリを実行すると、システムディスクのスペースが不足する
私はSQL Server 2012を初めて使用します。誰かが助けてくれればありがたいです。巨大なデータベースのコピーをSQL Server 2012に復元し、それに対していくつかの簡単なクエリを実行しようとしました。 136898115行のデータベーステーブルに対してSELECTクエリを実行しようとしています。このSELECTクエリには単純なWHERE句のみがあります。このクエリを実行するたびに、システムディスク(Windowsがインストールされているパーティション- C:\)の領域が不足するため(このパーティションには6GBの空き領域しかないため)失敗し、その理由はわかりません。tempdbは、14テラバイト以上の空き領域がある別のドライブ上にあると定義しました。もちろん、私のデータベースも別のドライブにあります。 システムパーティションの容量が不足する原因は何ですか?ページファイルですか?

1
ユーザーが特定の効果的な権限を持っている理由を調べるにはどうすればよいですか?
私は次を使用して有効なアクセス許可を照会できることを知っていますsys.fn_my_permissions: USE myDatabase; SELECT * FROM fn_my_permissions('dbo.myTable', 'OBJECT') entity_name | subentity_name | permission_name ------------------------------------------------ dbo.myTable | | SELECT dbo.myTable | | UPDATE ... これにより、現在のユーザーがmyTabledatabaseでSELECT、INSERT、UPDATEなどの権限を持っているかどうかがわかりますmyDatabase。 ユーザーがこれらの権限を持っている理由を簡単に見つけることは可能ですか?たとえばfn_my_permissions_ex、追加のreason列を出力する関数が必要です。 USE myDatabase; SELECT * FROM fn_my_permissions_ex('dbo.myTable', 'OBJECT') entity_name | subentity_name | permission_name | reason ------------------------------------------------------------------------------------------------------------------------------------ dbo.myTable | | SELECT | granted to database role public …

3
ページ編集時にSQL Serverクエリが遅い
SQL Server 2012では、次のT-SQLクエリで奇妙な動作が見られます。 SELECT Id FROM dbo.Person WHERE CONTAINS(Name, '"John" AND "Smith"') ORDER BY Name このクエリを単独で実行すると、2秒未満で約1,300の結果が得られます(フルテキストインデックスがありますName)。 ただし、クエリをこれに変更すると: SELECT Id FROM dbo.Person WHERE CONTAINS(Name, '"John" AND "Smith"') ORDER BY Name OFFSET 0 rows FETCH NEXT 10 ROWS ONLY 10件の結果を得るには20秒以上かかります。 次のクエリはさらに悪いです。 SELECT Id FROM ( SELECT ROW_NUMBER() OVER (ORDER BY Name) AS …

5
sys.dm_db_index_physical_statsのパフォーマンスを改善する
メンテナンスジョブ中に、断片化されたインデックスのリストを取得しようとしています。しかし、クエリは非常に遅く、実行に30分以上かかります。これはsys.dm_db_index_physical_statsのリモートスキャンによるものだと思います。 次のクエリを高速化する方法はありますか? SELECT OBJECT_NAME(i.OBJECT_ID) AS TableName, i.name AS TableIndexName FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'DETAILED') phystat INNER JOIN sys.indexes i ON i.OBJECT_ID = phystat.OBJECT_ID AND i.index_id = phystat.index_id WHERE phystat.avg_fragmentation_in_percent > 20 AND OBJECT_NAME(i.OBJECT_ID) IS NOT NULL ORDER BY phystat.avg_fragmentation_in_percent DESC 私はDBAではないので、上記のクエリで明らかな間違いを犯している可能性があります。または、役立つインデックスまたは統計があるかもしれません。たぶん、それはデータベースのサイズだけです(約140のテーブルで約20Gb)。 私が尋ねる理由は、夜中にメンテナンスのための非常に小さなウィンドウしかなく、これがほとんどの時間を占めているからです。

4
複数の行の列を単一の行に結合する
私はいくつか持っているcustomer_commentsため、データベースの設計に複数の行に分割して、レポートのために私は結合する必要がありcomments、それぞれ独自のからをid1行に。以前、SELECT句とCOALESCEトリックからのこの区切りリストで動作するものを試しましたが、思い出せず、保存してはいけません。この場合も動作するようには思えませんが、1行でしか動作しないようです。 データは次のようになります。 id row_num customer_code comments ----------------------------------- 1 1 Dilbert Hard 1 2 Dilbert Worker 2 1 Wally Lazy 私の結果は次のようにする必要があります。 id customer_code comments ------------------------------ 1 Dilbert Hard Worker 2 Wally Lazy そのため、row_num実際にはそれぞれ1行の結果しかありません。コメントはの順序で結合されるべきですrow_num。上記のリンクされたSELECTトリックは、特定のクエリのすべての値を1つの行として取得するために機能しますが、SELECTこれらすべての行を吐き出すステートメントの一部として機能する方法を理解することはできません。 私のクエリは、テーブル全体を単独で調べて、これらの行を出力する必要があります。私はそれらを複数の列(各行に1つ)に結合してPIVOTいませんので、適用できないようです。

4
2008でのバックアップのSQL Server 2012下位互換性
SQL Server 2008を使用するクライアントが多数ありますが、これもサーバー上にあります。バックアップファイルを使用して、クライアント間およびオフィスでデータベースをやり取りします。 SQL Server 2012からバックアップを作成すると、2008インスタンスに復元する方法がないことを読みました。互換性レベルがこの問題を処理すると仮定しましたが、そうではありません。そのため、アップグレード方法については迷っています。すべてのクライアントを一度にアップグレードすることは不可能ですが、これは不可能ですが、これを行うためのクリーンな方法は考えられません。 データベースをクライアントに送信するだけでなく、クライアントからデータベースを受信する必要があります。これは、SQL Serverでの最初のバージョンアップグレードであるため、この問題は初めてです。進め方に関するアイデアはありますか?
14 sql-server 

3
SQL ServerでSSDドライブのRAIDアレイを構成するにはどうすればよいですか?
48 GB RAM、1 CPU、および8 SATA III(6GB / s)SSDドライブ(128 GB Crucial m4)およびLSI MegaRAIDコントローラー(SAS 9265-8i)を備えたSQL Serverを構築しています。典型的な作業負荷はほとんど読み取りであると予想されます。いくつかの期間、より重い書き込みアクティビティがあります(サードパーティのデータプロバイダーとの1時間ごとのデータ同期-毎晩のバックアップ)が、一般的な読み取り/書き込み比率は約90%読み取り/ 10%書き込みです。 オプション1: 論理ドライブC:-RAID 1(2台の物理ドライブ) -OS論理ドライブD:-RAID 10(6台の物理ドライブ)-DBファイル/ログ/ tempdb / backups? または オプション2: 論理ドライブC:-RAID 1(2つの物理ドライブ) -OS論理ドライブD:-RAID 1(2つの物理ドライブ)-Dbファイル 論理ドライブE:-RAID 1(2つの物理ドライブ)-ログファイル/バックアップ? 論理ドライブF:-RAID 1(2つの物理ドライブ)-tempdb または オプション3: その他の提案 すべてのDBアクティビティは3つのドライブにストライピング(およびアレイ内の他の3つにミラーリング)されるため、オプション1はパフォーマンスを向上させると考えていますが、オプション2は従来の知恵を模倣しているようです(機械的により多く適用されるようです)SSDよりもドライブ)。Stack Overflowはオプション1でなくなったようです。 SSDでは、その時点でI / Oが制限されているのではなく、サーバーのCPUが制限されている可能性があるため、すべてを単一の論理ドライブに配置しても問題ないと思います。 もう1つの質問は、夜間バックアップをどこに配置すればよいかということです。バックアップによってSQLサーバーの残りの部分の速度が低下することは望ましくありません。これらの場合の読み取り/書き込み動作は順次書き込みなので、ログと同じ場所にバックアップを書き込むことをお勧めします。

2
センサーアレイから大量のデータを保存する
私は、巨大なセンサーアレイからのデータサンプルを保存するソリューション(appおよびdb)を実装することを任されました。アレイは現在約20,000個のセンサーで構成されていますが、まもなく100,000個のセンサーに拡大します。各センサーは10秒ごとにデータサンプルを送信し、各サンプルのサイズは28バイトです。 したがって、合計を行うと、次のようになります。 1日あたりセンサーあたり8640サンプル 1日あたりセンサーあたり242kBのデータ 1日あたり864百万サンプル 今、データを保存/取得する最善の方法は何だろうと思っていますか?ソフトウェアが既に指定された後、私はこのプロジェクトに「参加」したので、SQL Serverを使用してWindowsプラットフォームに実装する必要があります。 私の頭の中の現在の解決策は、データサンプルを格納する2つのテーブルを持つDBを作成することです。1つ目は2つ目のインデックスの一種として機能し、センサーごとに1日あたりのバイナリフィールドに照合サンプルを格納します。 Table 1: RecordID - BigInt - Identity SensorID - BigInt - Primary Key Date - DateTime - Primary Key (yyyy-mm-dd) Table 2: RecordID - BigInt - Primary Key (from an insert into Table 1) Data - Binary 基本的に、すべてのセンサーのサンプルを一時ファイル(センサーごとに1つ)に書き込みます。毎日の終わりに、表1のエントリを作成し、生成されたRecordIDを使用して、ファイルを表2のデータフィールドにダンプします。 この方法では、8億4400万エントリではなく、1日あたり100,000エントリしかテーブルに登録されません。データはLANまたは高速WANで利用可能である必要があります。そのため、1日単位でセンサーデータを取得できます。 すべてのデータを保存する必要がありますが、ほとんどのデータはおそらく読み込まれません。そのため、テーブルの読み取りの量は書き込みよりも大きくなることはありません。 データファイルへのパスを保存するだけで、ファイルシステムを使用して何かを実装できることは知っていますが、バイナリフィールドが256kB未満の場合、SQL ServerはNTFSよりも優れていることを読みました。(256 …

3
SQL Server CLRのサードパーティdll
SQL Server CLRのトリガーc#コードでサードパーティのDLLを使用する必要があります しかし、参照を追加しようとすると、SQL ServerからのDLLが表示されるだけです。 サードパーティのdllをSQL Server に追加するにはどうすればよいですか?
14 sql-server  c#  sql-clr 

3
「異種クエリ」とは何ですか?
プログラムで実行しているSQLクエリに関する次のエラーメッセージが表示されました。SQL Server 2005 T-SQL。 異種クエリでは、接続用にANSI_NULLSおよびANSI_WARNINGSオプションを設定する必要があります。これにより、一貫したクエリセマンティクスが保証されます。これらのオプションを有効にしてから、クエリを再発行してください。(重大度16) それを修正することは、容易なセットですANSI_NULLSとANSI_WARNINGS ON、私は知りたいと思ったものを異種クエリです。A Google検索がセットに私に言った結果の数十立ち上げるANSI_NULLSとANSI_WARNINGS、どのような用語の意味を説明する何を。クエリは次のとおりです。 UPDATE SRV.DB.DBO.TABLE SET Column= (SELECT Column FROM SRV1.DB.DBO.TABLE) これは、1つのクエリで複数のデータベースエンジンに接続しているためだと考えています。 「異種」とは、このコンテキストで2つの異なるデータベースエンジンを照会することだけを指しますか?

3
ストアドプロシージャのスケーラビリティのテスト
各ページの読み込みで特定のユーザーの新しいメッセージの数をUIに配信するために呼び出される電子メールアプリケーションがあります。DBレベルでテストしているものにはいくつかのバリエーションがありますが、すべてストアドプロシージャコールによって抽象化されています。 私は、ブレークポイント(1秒あたりのリクエスト数)がどうなるかを確認するために、DBを強打しようとしています。 一言で言えば、このuserId、newMsgCountなどのテーブルとuserIdのクラスター化インデックスがあります。SQLは、1秒あたり数百または数千のこれらの応答を処理できる必要があります。遅れは私の.NETアプリだと思います。 SQLパフォーマンスに基づいてテスト結果を達成するために、これをどのように良いテストにすることができますか? これには、ストアドプロシージャ名とパラメーターを指定してDBをパンドするツールがありますか? DBが1分を返すことができるかどうかを見たいです。1秒あたり250応答。

3
SSMSが新しい行を下ではなく表の上部に挿入するのはなぜですか?
SQL Server Management Studio 2008(データベースはSQL Server 2005)のテーブルに行を手動で挿入するたびに、新しい行はリストの一番下ではなく一番上に表示されます。ID列を使用しているため、次のような結果になります id row 42 first row 1 second row 2 third row 行がフェッチされ、明示的に順序付けされていない場合。これにより、Webアプリの行がフェッチされたときに外観が異なり、TOP 1クエリが返すものが変更されます。 私はorder by彼らができることを知っていますが、なぜこれが起こっているのですか?私のデータのほとんどはWebアプリケーションを介して挿入され、このアプリケーションからのすべての挿入は、先入れ先出しの順序になります。たとえば、最新の挿入は下にあるため、IDはすべて連続しています。サーバーまたはManagement Studioに、この不適切な順序付けを引き起こす設定がありますか?

4
SQL Serverのテストデータを生成するためのツールは何ですか?
ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 私の別の質問からわかるように、テストデータを生成することが今の私のテーマです。 この時点で、私はまだ手動でテストデータを生成しています。ただし、このプロセスは手動プロセスであるため、常に少量のデータ(通常5〜10行)を生成します。 このプロセスを自動化するツールはありますか?特に、1mil以上の行を生成できるようにしたいと思います。

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