データベース管理者

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

1
指定した時間だけ一時停止/スリープ/待機するクエリを設計するにはどうすればよいですか?
SQL Server 2000インスタンスに対して監視アプリケーションをテストしています。指定した時間がかかるT-SQLクエリを作成するにはどうすればよいですか?たとえば、ほとんどのスクリプト言語にはSLEEP、指定された時間だけスクリプトの実行を一時停止できるコマンドのようなものがあります。SQL Server 2000と互換性のある類似のものを探しています。これは、監視アプリケーションの長時間実行されるクエリのしきい値設定をテストすることを目的としています。


2
SQL Serverでは、次の場合にLOOP JOINを強制する必要がありますか?
通常、すべての標準的な理由から、結合ヒントを使用しないことをお勧めします。しかし、最近、パフォーマンスを向上させるために強制ループ結合をほぼ常に見つけるパターンを見つけました。実際、私はそれを使い始め、推奨しすぎているので、何かを見逃していないことを確認するためにセカンドオピニオンを得たいと思いました。代表的なシナリオを次に示します(例を生成するための非常に具体的なコードは最後にあります): --Case 1: NO HINT SELECT S.* INTO #Results FROM #Driver AS D JOIN SampleTable AS S ON S.ID = D.ID --Case 2: LOOP JOIN HINT SELECT S.* INTO #Results FROM #Driver AS D INNER LOOP JOIN SampleTable AS S ON S.ID = D.ID SampleTableには100万行があり、そのPKはIDです。 一時テーブル#Driverには、1つの列、ID、インデックスなし、5万行しかありません。 私が一貫して見つけることは次のとおりです。 ケース1:NOヒント SampleTableを上のインデックススキャン ハッシュ結合 …
15 sql-server 

4
Mac上のSQL Server
SQL Serverエンジンエクスプレス版はOS Xにインストールできますか?私は自宅でMacBookを使用していますが、SQL Serverのテスト/学習プラットフォームとして使用したいと考えています。

2
データベース所有者の特権。アプリケーションユーザー
クイックバージョン: データベース所有者がこのデータベース内のテーブルにアクセスできるようにするには、どのコマンドを発行する必要がありますか?これは、その所有者のアカウントから実行できますか? 長いバージョン: RDSでデータベースを作成しています。Amazonで設定した「root」ユーザーがいます。 Amazonは自動的にグループロール「rds_superuser」を作成します。これは非常に特権がありますが、実際にはスーパーユーザーではありません。 次のように、アプリケーションのデータベースとユーザーを作成しています。 create database master_integration; CREATE ROLE master_application LOGIN ENCRYPTED PASSWORD '...' VALID UNTIL 'infinity'; GRANT ALL ON DATABASE master_integration TO GROUP rds_superuser WITH GRANT OPTION; GRANT ALL ON DATABASE master_integration TO GROUP master_application; \c master_integration; ALTER DEFAULT PRIVILEGES GRANT INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, …

3
win-loss-tieデータからストリークカウントとストリークタイプを取得する
誰にとっても物事が簡単になる場合は、この質問に対してSQL Fiddleを作成しました。 ある種のファンタジースポーツデータベースがあり、私が理解しようとしているのは、「現在のストリーク」データ(チームが最後の2つのマッチアップに勝った場合は「W2」、負けた場合は「L1」など)前回の対戦で勝利した後の最後の対戦-または、最新の対戦で同点だった場合は 'T1')。 基本的なスキーマは次のとおりです。 CREATE TABLE FantasyTeams ( team_id BIGINT NOT NULL ) CREATE TABLE FantasyMatches( match_id BIGINT NOT NULL, home_fantasy_team_id BIGINT NOT NULL, away_fantasy_team_id BIGINT NOT NULL, fantasy_season_id BIGINT NOT NULL, fantasy_league_id BIGINT NOT NULL, fantasy_week_id BIGINT NOT NULL, winning_team_id BIGINT NULL ) 列の値はNULL、winning_team_idその一致の同点を示します。 以下に、6チームと3週間分の対戦のサンプルデータを含むサンプルDMLステートメントを示します。 INSERT INTO FantasyTeams …

1
非クラスター化インデックスにクラスター化インデックス列を含める必要がありますか?
非クラスター化インデックスはクラスター化インデックスに基づいていることを考慮すると、非クラスター化インデックスには、クラスター化インデックスに含まれる列のいずれかをリストする必要がありますか? 言い換えると、ProductsテーブルにProductIDのクラスター化インデックスが含まれている場合、ProductID列を含めることが望ましい非クラスター化インデックスを作成するときに、列として追加する必要がありますか? そうでない場合、非クラスター化インデックスに列名を追加するとよいシナリオはありますか?

2
SQL Server 2012で読み取り専用サーバーロールを作成する方法
新しいサーバーの役割を作成するときに「データベースの表示」アクセス許可を付与していますが、このアクセス許可はユーザーがシステムデータベースを表示することのみを許可することに気付きました。 読み取り専用で、任意のデータベースを読み取ることができるサーバーロールを作成しようとしています。 ユーザーデータベースを読み取るユーザー定義サーバーロールを作成する方法はありますか?または、ユーザーごとのユーザーマッピングを通じてこれを行う必要がありますか?

3
最小限のダウンタイムでherokuデータベースをAmazon RDSに移行する
heroku postgresデータベースがあり、それをAmazon RDSに移行してコストを節約したい。最小のダウンタイムでこれを行う方法は何ですか?通常、これには、データベースをリアルタイムで複製し、複製されたDBをメインDBとして昇格することが含まれます。 フォロワーデータベースを使用してheroku内のDBを移行でき、リードレプリカデータベースを使用してAmazon RDS内のDBを移行できることを知っています。自分のAmazon RDSにあるheroku DBのデータベースレプリケーションを作成する同様の方法はありますか?

3
WHERE条件とGROUP BYを使用したSQLクエリのインデックス
WHERE条件付きのSQLクエリに使用するインデックスと、GROUP BY現在非常に遅いインデックスを決定しようとしています。 私のクエリ: SELECT group_id FROM counter WHERE ts between timestamp '2014-03-02 00:00:00.0' and timestamp '2014-03-05 12:00:00.0' GROUP BY group_id テーブルには現在32.000.000行があります。時間枠を増やすと、クエリの実行時間が非常に長くなります。 問題のテーブルは次のようになります。 CREATE TABLE counter ( id bigserial PRIMARY KEY , ts timestamp NOT NULL , group_id bigint NOT NULL ); 現在、次のインデックスがありますが、パフォーマンスはまだ遅いです。 CREATE INDEX ts_index ON counter USING btree (ts); …

4
メンテナンスプランジョブでローカルサーバー接続を変更または更新する方法
2日前に、クライアントが開発サーバー名の1つを変更しました サーバーの名前が変更された後、サーバー名が一致しないため、すべてのメンテナンスジョブおよびその他のジョブが失敗します。 私たちは、使用しているSQL Server 2012のバージョンとサーバー2008 OSを だから今日の朝、私はSQL Server 2012の名前を名前を更新して名前を変更し、テーブル、手順を更新しました メンテナンスジョブでローカルサーバー接続を更新しようとしましたが、編集できません。次に、新しいサーバー接続を追加しましたが、ジョブを実行中にエラーが発生することはありません。 ジョブプロパティオプションのターゲットページで試した後、ターゲットサーバーのみが選択され、複数のターゲットサーバーが無効になっています。 以下のエラー ユーザーとして実行:NT Service \ SQLSERVERAGENT。64ビット版Microsoft(R)SQL Server Execute Package Utilityバージョン11.0.2100.60 Copyright(C)Microsoft Corporation。全著作権所有。 開始:12:01:28 AMエラー:2013-12-16 00:01:43.98コード:0xC00291ECソース:{410F7661-F71A-4B68-9584-BA422AB00F02} SQLタスクの実行の 説明:接続「ローカルサーバー接続」の取得に失敗しました。接続が正しく構成されていないか、この接続に対する適切な権限がない可能性があります。終了エラー エラー:2013-12-16 00:02:00.00 コード:0xC0024104 ソース:Territory_Update 説明:タスクのExecuteメソッドがエラーコード0x80131904を返しました(SQL Serverへの接続の確立中にネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないかアクセスできませんでした。インスタンス名が正しいことと、 SQL Serverは、リモート接続を許可するように構成されています(プロバイダー:名前付きパイププロバイダー、エラー:40-SQL Serverへの接続を開けませんでした)。Executeメソッドは成功し、「out」パラメーターを使用して結果を示す必要があります。終了エラー エラー:2013-12-16 00:02:15.00 コード:0xC0024104 ソース:{4E2AF328-0B8D-4905-83BE-839FDDEFC09C} 説明:タスクのExecuteメソッドがエラーコード0x80131904を返しました(SQL Serverへの接続の確立中にネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないかアクセスできませんでした。インスタンス名が正しいことと、 SQL Serverは、リモート接続を許可するように構成されています(プロバイダー:名前付きパイププロバイダー、エラー:40-SQL Serverへの接続を開けませんでした)。Executeメソッドは成功し、「out」パラメーターを使用して結果を示す必要があります。 終了エラーDTExec:パッケージ実行はDTSER_FAILURE(1)を返しました。 開始:12:01:28 AM 終了:12:02:15 AM …

1
さまざまなSQL Serverスキーマのユーザー権限を設定する
特定のユーザーへのアクセスを制限する必要がありますが、dboが所有するテーブルのデータを表示できるようにする必要があります。 私は次のことをしようとしています: dboスキーマは通常どおり機能し、すべてにアクセスできます。 schema1スキーマはschema1オブジェクトのみにアクセスできます schema1ビューまたはストアドプロシージャがdboが所有するテーブルのデータにアクセスする場合、パーミッションチェーンは適切に user1はschema1にアクセスできますが、他には何もありません。#3の場合を除く 私が試したものは次のとおりです。 ランダムパスワードを使用してテストログインにマップされたuser1ユーザーを作成します dboスキーマにいくつかのテストデータを含むテーブルをいくつか作成しました schema1スキーマを作成しました dbo.people、dbo.taglinks、およびdbo.tagsのデータにアクセスするschema1.profilesというビューから選択するschema1.get_profilesを作成しました ただし、user1としてログインしているときに次のステートメントを使用します。 EXEC get_profiles 1 結果: The SELECT permission was denied on the object 'tags', database 'schema_test', schema 'dbo'. WITH EXECUTE AS OWNER「所有権の連鎖」がどのように機能するかを理解しようと試みましたが、理解できません。 私も試しました GRANT EXECUTE ON SCHEMA::schema1 TO user1 GRANT INSERT ON SCHEMA::schema1 TO user1 GRANT SELECT ON SCHEMA::schema1 …

1
上位のデータベースプラットフォームで符号なし整数型が利用できないのはなぜですか?
データベースは通常、さまざまなデータ型とカスタムの長さで非常にカスタマイズ可能です。 unsigned intPostgreSQLとMS SQL Serverのどちらからも利用できない型を使用する構文を探しているので、私は驚きました。MySQLとOracleのようです。 これは明白な省略のように見えます-次に最適なパフォーマンスオプションはlong / bigint(8バイト整数)ですが、完全に不要な場合があります!ネイティブのunsigned intサポートを含めないことを選択する理由を誰もが知っていますか?

5
PostgreSQLのバックアップ用に読み取り専用ユーザーを作成するにはどうすればよいですか?
PostgreSQLで読み取り専用のバックアップユーザーを作成することは不可能ですか? IRCチャンネルで、所有権のないバックアップのみのユーザーを作成することはできないとアドバイスを受けました。私はそれが非常に奇妙だと思うので、何かを見逃していないことを確認したいと思います。 以下は私が試したものですが、探している結果が得られません。私がpg_dump与えられたテーブルで行うとき、私は得ていPermission denied for relation...ます: GRANT SELECT ON ALL TABLES IN SCHEMA public TO backup; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO backup; GRANT SELECT, USAGE ON ALL SEQUENCES IN SCHEMA public TO backup; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, USAGE ON SEQUENCES …

3
SQL ServerがすべてのCPUコア/スレッドを使用していない
SQL Serverのハードウェアをアップグレードした後、Windowsタスクマネージャーで、SQLインスタンスが使用可能なスレッドの半分しか使用していないことに気付きました。 。 サーバーには次のハードウェアとソフトウェアがあります。 Windows 2008 R2 Enterprise 64ビットSP1 Intel Xeon E7-4870-4プロセッサー(40コア、80スレッド) Microsoft SQL Server 2012 Enterprise Edition(64ビット) 実行select cpu_count from sys.dm_os_sys_infoすると40が返されます。 OSは80スレッドすべてを認識します。 サーバーの処理能力の半分しか使用されていないのはなぜですか? 2台のサーバーに同じハードウェアとソフトウェアがあり、どちらも同じ動作を示します。

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