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

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

3
完全バックアップ中にトランザクションログのバックアップを停止する必要がありますか?
異なる間隔で実行するようにスケジュールされた2つのSQLエージェントジョブがあります。最初のジョブは、1日に1回完全バックアップを実行します。2番目のジョブは、15分ごとにトランザクションログのバックアップを実行します。 データベースの成長に伴い、完全バックアップは当初の計画よりも時間がかかります(圧縮しても)。そして、ログから、トランザクションログのバックアップが同時に実行されていることに気付きました。 完全バックアップの実行中に実行されないように、トランザクションログバックアップのスケジュールを変更する必要がありますか?それは重要ですか?

5
SQL Serverを再起動すると速度が上がりますか?
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 一部のDBAがSQL Serverを非常に頻繁に、時には夜間でも再起動することに気付きました。メモリを解放するために、またはクエリを高速化するために、彼らがそれを行うと信じています。再起動後にクエリプランを再コンパイルする必要があることは知っていますが、それを含めて、このプラクティスに最終的なメリットがあるのではないかと考えています。 SQL Serverを毎日再起動すると、実行速度が向上するのは本当ですか?

4
varchar(8000)を設定するとどのような結果になりますか?
varcharはフィールドのサイズに比例してディスク領域を使用するため、たとえばvarchar(8000)SQL Serverで、varcharを常に最大値として定義する必要がない理由はありますか? テーブルを作成するときに、誰かがやっているのを見たらvarchar(100)、あなたは間違っていると言ってはいけませvarchar(8000)んか?

7
SQL ServerをMySQLに移行する必要がある
Windowsサーバー上のSQL Server 2008にデータベースがあり、Ubuntuサーバー上のMySQLデータベースにすべてのデータを移動したい。MySQL ODBCドライバーでSQL Serverのインポートおよびエクスポートウィザードを使用してみましたが、両方のデータベースに正しくアクセスしましたが、型変換の仕様を含むxmlファイルは存在せず、仕様を作成するには正しく制限されていました。型変換ファイルを作成する方法、またはこのデータを転送するためのより良いツールを入手する場所のいずれかを知っていますか?

7
ユーザーをSQL Server 2008データベースから追​​い出すにはどうすればよいですか?
他のユーザーが接続されているため、復元を行う必要があります。すべてのプロセスを切断したと思いましたが、明らかにそうではありませんでした。 Management Studioからこのバックアップを実行できるように、他のすべてのユーザーを開始するにはどうすればよいですか?

4
「増分キーに基づいたクラスター化インデックスの作成を避ける」ことは、SQL Server 2000日からの神話ですか?
私たちのデータベースは多くのテーブルで構成されており、そのほとんどは整数の代理キーを主キーとして使用しています。これらの主キーの約半分はID列にあります。 データベース開発は、SQL Server 6.0の時代に始まりました。 これらのインデックス最適化のヒントにあるように、最初から続いているルールの1つは、増分キーに基づいてクラスター化インデックスを作成しないことです。 現在、SQL Server 2005とSQL Server 2008を使用して、状況が変わったという強い印象を持っています。一方、これらの主キー列は、テーブルのクラスター化インデックスの完全な最初の候補です。

2
クエリの種類ごとに個別のインデックスが必要ですか、それとも1つのマルチカラムインデックスが機能しますか?
私はこの質問に対する答えをすでにある程度知っていますが、私は常にトピックについて取り上げる必要があると感じています。 私の基本的な理解は、一般的に言って、特定の時点でクエリ/ソートを行う可能性のあるすべてのフィールドを含む単一のインデックスは有用ではない可能性が高いということです。誰かが考えたように、「まあ、すべてのものをインデックスに入れると、データベースはそれを使って必要なものを見つけることができます」、実際に実行されているクエリの実行計画を見たことがありません。 次のようなテーブルを想像してください。 id int pk/uid name varchar(50) customerId int (foreign key) dateCreated datetime およびフィールドを含む単一のインデックスが表示されるname場合がcustomerIdありdateCreatedます。 しかし、私の理解では、そのようなインデックスは、たとえば次のようなクエリでは使用されません。 SELECT [id], [name], [customerId], [dateCreated] FROM Representatives WHERE customerId=1 ORDER BY dateCreated このようなクエリの場合、より良いアイデアは、フィールドが「最初」であるフィールドcustomerIdとdateCreatedフィールドを含むインデックスになると思われますcustomerId。これにより、このクエリが必要なものを必要な順序ですばやく見つけることができるようにデータが編成されたインデックスが作成されます。 私が見るもう1つのことは、おそらく最初と同じくらい頻繁に、各フィールドの個々のインデックスです。そう、1それぞれにname、customerIdそしてdateCreatedフィールド。 最初の例とは異なり、このタイプの配置は、少なくとも部分的には役立つように思えます。クエリの実行プランは、少なくとものインデックスを使用customerIdしてレコードを選択しているが、dateCreatedフィールドのインデックスを使用してレコードをソートしていないことを示す場合があります。 テーブルの特定のセットに対する特定のクエリに対する具体的な答えは、通常、実行プランが実行することを示していることを確認することであり、そうでない場合はテーブルとクエリの詳細を取得することであるため、これは広範な質問であることを知っていますアカウント。また、クエリの特定のインデックスを維持するオーバーヘッドとは対照的に、クエリが実行される頻度に依存することも知っています。 しかし、私が求めているのはインデックスの一般的な「開始点」であり、頻繁にプルされる特定のクエリとWHERE句またはORDER BY句のフィールドに特定のインデックスを付けるという考えは意味がありますか?
22 sql-server  index 

4
テーブルの最大行数を1に制限する方法
SQL Serverデータベースに構成テーブルがあり、このテーブルには1行しかありません。将来の開発者がこれを理解できるように、複数行のデータが追加されないようにしたいと思います。以下のように、このためにトリガーを使用することを選択しました... ALTER TRIGGER OnlyOneConfigRow ON [dbo].[Configuration] INSTEAD OF INSERT AS BEGIN DECLARE @HasZeroRows BIT; SELECT @HasZeroRows = CASE WHEN COUNT (Id) = 0 THEN 1 ELSE 0 END FROM [dbo].[Configuration]; IF EXISTS(SELECT [Id] FROM inserted) AND @HasZeroRows = 0 BEGIN RAISERROR ('You should not add more than one row …

1
CREATE INDEX…WITH ONLINE = ONが数分にわたってテーブルへのアクセスをブロックするのはなぜですか?
既存のテーブルがあります: CREATE TABLE dbo.ProofDetails ( ProofDetailsID int NOT NULL CONSTRAINT PK_ProofDetails PRIMARY KEY CLUSTERED IDENTITY(1,1) , ProofID int NULL , IDShownToUser int NULL , UserViewedDetails bit NOT NULL CONSTRAINT DF_ProofDetails_UserViewedDetails DEFAULT ((0)) ); このテーブルには150,000,000行があります。システムは24時間365日稼働しているため、定期的にメンテナンスウィンドウが発生することはありません。 テーブルにインデックスを追加したいのですが、SQL ServerのEnterpriseエディションでは、テーブルへの書き込みアクセスをブロックせずにインデックスを追加できるはずです。使用したコマンドは次のとおりです。 CREATE INDEX IX_ProofDetails_ProofID_Etc ON dbo.ProofDetails (ProofID, IDShownToUser) INCLUDE (UserViewedDetails) WITH (ONLINE=ON , ALLOW_ROW_LOCKS=ON , …

4
SQLサーバージョブを実行する権限を付与する
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 MSSQLサーバー2005に、すべてのデータベースユーザーの実行を許可するジョブがあります。 ジョブの実際の作業への入力はデータベーステーブルから取得されるため、セキュリティについては心配していません。そのテーブルにレコードを追加せずにジョブを実行するだけでは何も実行されません。 仕事に公共の許可を与える方法を見つけることができません。 これを行う方法はありますか?この時点で考えることができる唯一のことは、ジョブを絶えず実行する(またはスケジュールどおりに実行する)ことです。存在するとすぐに行われますが、これは最適なソリューションではないようです。

1
特定の時間にログに表示されるFlushCacheメッセージ
最近、多くのデータベースパフォーマンスの問題が発生しており、その理由を理解できるかどうかを確認しようとしてきました。私たちにはDBA(私はソフトウェア開発者)がいないので、私はただそれを翼に乗せているようなもので、オンラインで見つけたものの多くは外国語のように読めます。 SQL Serverは毎朝再起動します。これが、稼働中にSQL Serverを操作できる唯一の方法だからです。毎朝午前5時ごろに、ログで2分ごとにこのメッセージを取得し始めていることに気付きました。 FlushCache:db 9:0の97168ミリ秒で7432の書き込みで11848 bufsをクリーンアップ(8139の新しいダーティbufsを回避) 最後の未解決のターゲット:4、avgWriteLatency 32 平均スループット:0.72 MB /秒、I / O飽和:11635、コンテキストスイッチ18849 数字はもちろん毎回異なりますが、サーバーを再起動するまで同じパターンで何度も同じメッセージが表示されます。私はこれをどのように解釈するかわからない、私はそれについてグーグルにしようとしてきたし、私が集めたのは、I / Oに何か問題があるかもしれないということであり、何かが予想以上に時間がかかっているということです。最近SSDの使用に切り替えたので、書き込みの問題になるとは思いませんでした。 誰もこれに光を当てることができますか?

1
SQL Serverで、クラスター化インデックスの逆方向スキャンで並列処理を使用できないのはなぜですか?
私はSQL Serverの内部について読んでいますが、すべての本やブログでは後方スキャンについてこれに言及しています。 クラスター化インデックスの逆方向スキャンでは並列処理を使用できません 何かを言った唯一の投稿は、以下のこの投稿です。投稿によると、SQL Serverチームは後方スキャンに必要な最適化を実装していません。https://www.itprotoday.com/sql-server/descending-indexes リーフレベルのページは二重にリンクされたリストを使用してリンクされているため、後方スキャンが前方スキャンと異なる理由はわかりません。明確化をお願いします。

5
SQL Serverのデフォルトポートの使用を避けることはまだベストプラクティスですか?
従来、セキュリティのベストプラクティスの一環として、SQL Serverへの接続にデフォルトポートを使用しないことが推奨されてきました。単一のデフォルトインスタンスを持つサーバーでは、デフォルトで次のポートが使用されます。 SQL Serverサービス-ポート1433(TCP) SQL Server Browserサービス-ポート1434(UDP) 専用管理接続-ポート1434(TCP) 質問: このアドバイスはまだ関係がありますか? 上記のすべてのポートを変更する必要がありますか?

4
なぜBULK INSERTは危険と見なされますか?
この質問は、データベース管理者のStack Exchangeで回答できるため、Information Security Stack Exchangeから移行されました。 2年前に移行され ました。 一般にサイバーセキュリティチーム(私が扱った複数の組織)がBULK INSERTアプリケーションやデータベースプログラマーに(TSQLなどの)権利を付与することに対して何の不満があるのか​​を理解したいと思いますか?最終的な結果は次のようなことを行うアプリケーションと変わらないため、何かを逃さない限り、「ディスクの乱用を埋める」という言い訳は信じられません。 for (long i = 0; i < LONG_MAX; ++i) executeSQL("INSERT INTO table VALUES(...)"); これINSERTは、基本的な書き込み権限を持つ人が実行できる一般的なDMLコマンドです。 アプリケーションの利点として、BULK INSERTはるかに効率的で高速であり、プログラマーはSQLの外部でファイルを解析する必要がなくなります。 編集:私はもともと情報セキュリティサイトでこの質問をしました-BULK INSERTを使用することに反対しているのはDBAではなく、「情報保証」(略してIA-サイバーセキュリティの人々)が問題を強要しているからです。この質問をあと1日か2日シチューさせますが、バルク操作が実際に制約またはトリガーをバイパスする場合、問題であることがわかります。

6
SQL Serverインジェクション-26文字でどれくらいのダメージがありますか?
SQL Serverデータベースへのインジェクション攻撃に対する回復力をテストしています。 dbのすべてのテーブル名は小文字であり、照合は大文字と小文字を区別するLatin1_General_CS_ASです。 送信できる文字列は大文字に強制され、最大26文字の長さにすることができます。したがって、テーブル名が大文字になり、照合のためにステートメントが失敗するため、DROP TABLEを送信できません。 だから-私は26文字でできる最大のダメージは何ですか? 編集 パラメーター化されたクエリなどについてはすべて知っています。送信するクエリを作成するフロントエンドを開発した人が、この場合はparamsを使用しなかったとします。 また、私は悪意のあることをしようとはしていません。これは、同じ組織内の他の誰かによって構築されたシステムです。

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