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

SQL Server 2005(メジャービルドバージョン9.00.xxxx)。sql-serverにもタグを付けてください。

1
複数のCOUNTがCASEの1つのSUMよりも速いのはなぜですか?
次の2つのアプローチのどちらが速いかを知りたかったのです。 1)3つCOUNT: SELECT Approved = (SELECT COUNT(*) FROM dbo.Claims d WHERE d.Status = 'Approved'), Valid = (SELECT COUNT(*) FROM dbo.Claims d WHERE d.Status = 'Valid'), Reject = (SELECT COUNT(*) FROM dbo.Claims d WHERE d.Status = 'Reject') 2)SUMとFROM-clause: SELECT Approved = SUM(CASE WHEN Status = 'Approved' THEN 1 ELSE 0 END), …

1
SSMSからタブ区切りファイルをクエリできますか?
Sql Server Management Studioからタブ区切りファイルをクエリして、どこにも保存せずにデータを表示することは可能ですか? 私はあなたがBULK INSERT次のようなものを使用してタブ区切りファイルからできることを知っています: BULK INSERT SomeTable FROM 'MyFile.txt' WITH ( FIELDTERMINATOR = '\t', ROWTERMINATOR = '\n'); ただし、事前に列を把握し、データを保持するテーブルを作成する必要があります。 またOPENROWSET、次のようなExcelドライバーを使用して事前に列を定義せずに、CSVやExcelなどの他のファイルタイプを照会できることも知っています。 -- Query CSV SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Text;Database=\\Server\Folder\;HDR=Yes;', 'SELECT * FROM MyFile.csv') -- Query Excel SELECT * FROM OPENROWSET('Microsoft.Ace.OLEDB.12.0', 'Excel 8.0;Database=MyFile.xls', 'SELECT * FROM [Sheet1$]') 私は、レジストリキーを変更した場合も、Format下HKLM\Software\Microsoft\Office\12.0\Access Connectivity Engine\Engines\TextからCSVDelimitedのTabDelimitedSQL Server上で、上記のCSVクエリは正しく、私は私が欲しいとは思わないので、しかし、それはもはや、カンマ区切りのテキストファイルを読み込みます、タブ区切りのテキストファイルを読み込みませんそのままにしておきます。 …

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いませんので、適用できないようです。

2
ストアドプロシージャでのクエリの実行がクエリウィンドウよりも遅いのはなぜですか?
クエリウィンドウで2秒で実行される複雑なクエリがありますが、ストアドプロシージャとしては約5分です。なぜストアドプロシージャとして実行するのにこれほど時間がかかるのですか? クエリは次のようになります。 それは(によって識別されたレコードの特定のセット取り@idと@createdDate)、および特定の時間枠(から始まる1年間@startDateそれらの手紙の結果として受け取った手紙の要約リストが送られた)とリターンと推定支払いを。 CREATE PROCEDURE MyStoredProcedure @id int, @createdDate varchar(20), @startDate varchar(20) AS SET NOCOUNT ON -- Get the number of records * .7 -- Only want to return records containing letters that were sent on 70% or more of the records DECLARE @limit int SET @limit = IsNull((SELECT Count(*) …

6
SQL Serverチェックリスト
私の他の質問に続いて、アラートの観点から、毎日/毎週/毎月のベースで何を検討すべきかについて考え始めたいと思います。私は問題が起こる前に来ることを見ることができることを望んでいます(それは計画です)... これまでのところ、次のスクリプトを収集し始めました(順序なし): 毎日 システムの稼働時間を確認します(DBAとして何かを確認する必要がある場合に備えて) 最後のバックアップを確認する トランザクションログのバックアップを確認する SQLジョブのステータスを確認する 過去24時間(または1140分)の平均CPU使用率を確認します 毎週 MSDBバックアップ履歴を確認する CheckDBが最後に実行された時刻を確認する インデックスの断片化を確認する インデックスの統計を確認します(読み取りと書き込みなど) IOのボトルネックを確認する 毎月 不足しているインデックスを確認する 使用されなくなったインデックスを確認する 他の提案はありますか?(私はDBAが初めてなので、どんなヘルプ/アドバイスもいつでも歓迎します)

3
フルテキストインデックスのあるテーブルで、単純なALTER TABLEコマンドが非常に長い時間がかかるのはなぜですか?
列にフルテキストインデックスが作成された大きな名前(〜6700万行)の名前と値のテーブルがありDataValueます。 次のコマンドを実行しようとすると: ALTER TABLE VisitorData ADD NumericValue bit DEFAULT 0 NOT NULL; 1時間10分間実行されVisitorDataますが、約6,700万行を含むテーブルでは完了しません。 なぜこれに時間がかかり、完了しないのですか? 私はそれについて何ができますか? 表の詳細は次のとおりです。 CREATE TABLE [dbo].[VisitorData]( [VisitorID] [int] NOT NULL, [DataName] [varchar](80) NOT NULL, [DataValue] [nvarchar](3800) NOT NULL, [EncryptedDataValue] [varbinary](max) NULL, [VisitorDataID] [int] IDENTITY(1,1) NOT NULL, CONSTRAINT [PK_VisitorData_VisitorDataID] PRIMARY KEY CLUSTERED ( [VisitorDataID] ASC ) WITH (PAD_INDEX …

4
主キーで複数の行を返す結合から最初の行を選択する方法
これはこの質問に関連しています: 複数のテーブルを結合すると重複した行が発生します 参加しているテーブルが2つあります。彼らは鍵を共有します。personテーブルには主キーごとに1つの名前がありますが、emailテーブルにはpersonIdごとに複数のメールがあります。1人あたりの最初のメールのみを表示します。現在、メールが複数あるため、1人に複数の行が表示されます。SQL-Server 2005を実行しています。 編集:これはT-SQLです。最初のメールは文字通り、1人あたりの最初のメール行です。 編集2:最初の電子メールは、SQLがクエリを処理するときに結合に表示される最初の電子メール行になります。どのメールが表示されるかは関係ありません。表示されるメールは1つだけです。それがより明確になることを願っています。 Table1: Person Table2: Email Select Person.PersonName, Email.Email From person left join on Person.ID=Email.PersonId;

2
どのセッションがどの一時テーブルを保持しているかを見つける
一時データベースがいっぱいになったSQL Server 2005データベースがあります。SQL Server Management Studioにアクセスすると、tempdbのすべての一時テーブルを確認できます。どのセッションがどの一時テーブルを保持しているかを知ることはできますか?理想的には、各セッションで使用される一時テーブルをリストするクエリです。 おかげで、

5
SQL Serverには、実行中のストアドプロシージャに渡されるパラメーターの値を決定する方法があります
実行中のストアドプロシージャを決定する1つの方法は、次のような「動的管理」メソッドを使用することです。 SELECT sqlText.Text, req.* FROM sys.dm_exec_requests req OUTER APPLY sys.dm_exec_sql_text(req.sql_handle) AS sqltext ただし、これはストアドプロシージャのcreateステートメントのテキストのみを表示します。例えば: CREATE PROCEDURE IMaProcedure @id int AS SELECT * FROM AllTheThings Where id = @id 理想的には、問題のあるパラメーターの特定のセットに対して非常に長く実行する原因となっている実行中のプロシージャーのパラメーターを確認したいと思います。 それを行う方法はありますか?(この質問では、 Aaron BertrandがDBCC InputBufferについて言及していますが、この問題には適切ではないと思います。)

1
ODBCデータソースSQL Server接続-ユーザーのログインに失敗しました
データベースをSQL 2005からSQL 2008のサーバーに移動しました。 現在、ODBCデータソースを作成しようとしています。 「ユーザーが入力したログインIDとパスワードを使用したSQL Server認証」を使用し、ログインとパスワードを入力しました。ログインは、SQL Server Management Studioの[セキュリティ]-> [ログイン]に表示されます。 ログインには、古いサーバーの同じログインの正確なプロパティも含まれています。ユーザー名とパスワードを入力した後、次にヒットすると、次のようになります: Connection failed: SQLState: '28000' SQL Server Error: 18456 [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'myUser'. これを読んだ後:http : //support.microsoft.com/kb/555332サーバープロパティが「Windows認証モード」のみに設定されていることに気付きましたが、「SQL ServerおよびWindows認証モード」に変更した後でも、接続の問題。Windowsアカウントで接続できます。

3
SQL Serverの情報スキーマへのアクセスを拒否する
sys.tables/ へのアクセスを無効にする最良の方法を探していますInformation SchemaSQL Serverのユーザー/グループのます。 見つけた は2008年からこのスレッド 次のようにアクセスを拒否する方法を示します[sys].[something]。 DENY SELECT ON [sys].[columns] TO DenySystemTableSelectRole GO DENY SELECT ON [sys].[tables] TO DenySystemTableSelectRole GO DENY SELECT ON [sys].[syscolumns] TO DenySystemTableSelectRole GO DENY SELECT ON [sys].[sysobjects] TO DenySystemTableSelectRole GO しかし、アクセスを無効にする方法はありませんInformation Schema: DENY SELECT ON INFORMATION_SCHEMA.TABLES To DenySystemTableSelectRole これは機能しないようです。 information_schemaへのアクセスを無効にするにはどうすればよいですか? そして、すべてへのアクセスを無効にする簡単な方法がありますsys/information_schema? 更新: 実際には、次のステートメントの両方を実行することはできません。 DENY SELECT …

6
SQL Serverのすべてのデータベースのバックアップを取る
Microsoft SQL Server 2005 DBサーバーがあります。DBサーバーには、約250のユーザーデータベースがあります。これらすべてのデータベースのバックアップを取る必要があります。バックアップを手動で取得すると時間がかかるため、250個すべてのデータベースのバックアップを自動的に取得するバッチスクリプトまたはDBスクリプトを探しています。誰でもこれを手伝ってくれますか?

4
データをアーカイブするためのテーブルパーティション
シナリオ: 2つのデータベース:DB_AとDB_Archive、tableAと呼ばれる非常に大きなテーブル1つ。 過去2か月のレコードに対してtableAがDB_Aで頻繁にクエリされるため、60日を超えるレコードは毎日DB_Aから削除され、主にDB_Archiveに移動されて「分離」されます。 このプロセスは時間がかかり、多くのリソースを消費するため、このプロセスを削除します。日付列のパーティション関数を使用してDB_Aにテーブルパーティションを実装し、1つのパーティションに2か月未満のすべてのレコードと別のパーティションに2か月以上のすべてのレコードを格納することを考えています。私の質問: このシナリオは、2つの異なるデータベースがある場合のように動作しますか?tableAにレコードを照会する> getdate()-30、アーカイブパーティションを読み取りますか? インデックスもパーティション化する必要があると思いましたか? 明日パーティション関数が「変更」されるという事実にどう対処しますか、つまり、今日関数を作成した場合(7月2日、その範囲は5月2日ですが、明日は5月3日です)。動的パーティション関数を作成できますか?

3
SQL Serverのパフォーマンスの突然の低下
最近、予測不能になったSQL Server 2005があり、その理由について頭を悩ませています。数秒で実行されるクエリは、計画を変更し、数分かかります(フルテーブルスキャンまたはインデックススプールに時間がかかります)。最初の最も明白なことは、統計が古くなってオプティマイザーが混乱することですが、これはそうではないと確信しています-まず、基礎となるデータが大きく変化していないためです2番目に、統計の自動作成と統計の自動更新が両方とも真であるためです。ただし、オプティマイザーは混乱しています。チューニングアドバイザーでSQLを実行CREATE STATISTICSすると、(次のSQLが誤動作するまで)修正しているように見える複数列のステートメントが多数得られます。 これを根本原因とするアプローチに使用できる戦略のアイデアはありますか?「通常の」統計だけでは不十分な理由はありますか?

2
新しいインスタンスをインストールせずにMS SQL 2005でインスタンス名を変更するにはどうすればよいですか?
インスタンスが実際には何もありません。単にインストールされているだけです(1つのプロジェクトを対象としていますが、このサーバーでは実際に行われず、プロジェクトは別のサーバーで重複して行われました)。名前を変更したいです。 これはできますか?どうすればいいですか? さらなる調査(グーグル)では、実際には不可能であると言われています。同僚との追加相談により、2k8インスタンスをインストールして先に進むこともできます。

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