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

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

2
OracleからSQL Serverにデータを移動する最も簡単な方法は何ですか?
当社の製品の1つは、データベースバックエンドとしてOracleとSQL Serverの両方をサポートしています。OracleバックエンドからMicrosoft SQL Serverに切り替えることを希望するお客様がいますが、これは私たちにとって典型的な移行ではありません。 すべてのデータをOracleスキーマ全体からSQL Serverデータベースに取得する最も簡単な方法は何ですか? スキーマにはプレーンな古いテーブルのみが含まれ、空想的なものは何もありません。手作業で移行しても問題ないストアドプロシージャが1つまたは2つある場合があります。 OracleのSQLDeveloperを使用してテーブルデータをCREATEand INSERTステートメントとしてエクスポートできますが、これらはSQL Serverで使用される構文と一致せず、構文エラーを手動で修正する必要がありません。

2
MS SQL Serverの暗号化とバックアップについて
そこで、 SQL Serverバックアップファイルの安全性についてチャットで質問しました。 攻撃者が暗号化されていない.bakファイルにアクセスできる場合、データにアクセスできると言われます。 このシナリオを見てみましょう: OPEN SYMMETRIC KEY MySymetricKey DECRYPTION BY CERTIFICATE MyCertificate 注意-ここにはパスワードはありません。 次に、テーブルを暗号化します: UPDATE tbl1 SET namePAss = ENCRYPTBYKEY(KEY_GUID('MySymetricKey'),name) GO ハッカーが私のbakファイルを手に入れたとしましょう。(自分のコンピューターとSQLサーバーで)データを表示するために彼がしなければならないことは: SELECT convert( NVARCHAR(max), decryptbykey(namePAss)) FROM tbl1 彼はまだデータにアクセスできますか?

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 …

4
インデックスの再構築、DBのサイズが10倍に
約15ギガのSQL Serverデータベース(2008 R2 SP1)があります。メンテナンスがしばらくの間実行されていなかったことが判明したため、すべてのインデックスを再構築するメンテナンスプランを作成しましたが、それらは非常に断片化されていました。 ジョブは終了し、断片化はなくなりましたが、データベースは120ギガ以上になりました!すべての再構築を行うために余分なスペースを使用していたことを理解していますが、ジョブが完了すると、そのスペースはすべて空きスペースになると思いますが、空きスペースは3ギグとしてしか表示されないため、117ギグが使用されていますインデックス再構築ジョブが終了しても。 私は非常に混乱しており、いくつかのガイダンスを使用することができます。データベースを適切なサイズに戻す必要がありますが、このためのディスク容量がありません。 前もって感謝します! 投稿された両方のクエリの結果は次のとおりです。 log_reuse_wait_desc NOTHING name TotalSpaceInMB UsedSpaceInMB FreeSpaceInMB LIVE_Data 152 123 28 LIVE_Log 18939 89 18849 LIVE_1_Data 114977 111289 3688 3番目のファイルは.ndfファイルです。これは、未使用スペースに3688だけを表示しますが、約15ギガのデータに111289を使用しています。

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
SSMSを使用して専用管理者接続(DAC)を確立することは可能ですか?
SSMSを使用してDACに接続することはできますか?正しく理解できれば、サーバー名の前に「admin:」プレフィックスを使用することで可能になりますが、次のメッセージが表示されます。 専用の管理者接続は、設計により複数の接続を確立するため、SSMSを介してサポートされません。(Microsoft.SqlServer.Management.SqlStudio.Explorer)


1
SQL ServerによるRAMの過剰使用を制御する方法は?
私が使用しているデータベースサーバーは、6つの異なるSQL Serverインスタンスを実行しています。48 GBのRAMがあります。そしてそのうちの1つは10 GBを超えるRAMを消費しており、現在の合計消費量は20 GBです。RAMの消費量は継続的に増加しています。数日前に40 GBを超えるRAMを使用し、サーバーの応答が非常に遅くなりました。アプリケーションは、データを保存するときにクラッシュする問題を示しています。 そこで、SQL Serverサービスを再起動しました。 サービスが再起動されるとすぐに、使用量は4 GBになりましたが、現在は増加しています。そして、4日か5日で最大40 GBになり、サーバーが遅くなるのではないかと心配しています。 サービスの再起動は、私が推測する良い選択肢ではありません。 また、さまざまなソースから、SQL Serverの最大メモリ使用量を設定できることもわかりました。これが役立つかどうかはよくわかりません。サーバーが運用データベースを使用しているため、これをテストすることはできません。SQLServerの設定を変更しているときにサービスが停止するとリスクが発生します。 誰でもこの問題を解決できますか?
13 sql-server 

1
20〜60秒ごとに起動するDBCC CHECKDB
実稼働環境への展開に急速に近づいている開発環境があり、ログで約20秒ごとにメッセージが表示されることに気付きました。 Starting up database 'dbname' CHECKDB for database 'dbname' finished without errors これに気づいたのは、これをテストしているエンドユーザーに問題があり、Windowsイベントログ(アプリケーションログ)でエラーに気付いたためです。 The log for database 'dbname' is not available. Check event log for related messages. ちなみに、関連するメッセージは見つかりませんでしたが、オフライン/オンラインサイクルで解決しました。 私が考えることができる唯一のことは、このアプリケーションが1msごとにデータを収集することですが、このデータのすべてがデータベースに挿入されるわけではありません。開発サーバーであるため、ログとデータが同じドライブ上にあるように構成されました。これら2つの情報を念頭に置いて、私はこれがIOの問題であり、サーバーがそのストレージ(SAN)への接続の損失から回復しようとしていることに傾倒しています。しかし、これでもすべてのデータベースが失われるわけではないため、これだけでは意味がありません。他に何がこれを引き起こしているのでしょうか? プラットフォーム:Windows Server 2008 R2(標準)上のSQL Server 2008 R2(Ent。)

3
SQL Serverのテーブルに複数のNULL可能FKを設定するのは悪い習慣と見なされますか
SQL Serverのデータベース構造には、注文に関するさまざまな情報を必要とする3種類の製品があります。だから、私は1つ作成しCustomers、テーブルと三つの異なる受注テーブルを:OrdersForProductAs、OrdersForProductBs、OrdersForProductCs。すべての注文表には、1対多の関係がありCustomersます。 Payments支払いの詳細を内部に保持する別のテーブルもあります。しかし、ここでそれをどのように構成するかについて疑問があります。 複数の製品タイプがあり、顧客が複数の製品を同時に注文する可能性があるため、これら3つの注文テーブルをPaymentsテーブルに関連付ける必要があります。 もう1つの問題は、顧客が1種類の製品のみを注文する可能性があることです。したがって、PaymentsテーブルのFK列はである必要がありますnullable。 私の質問は、これらのnullableFKカラムが長期的には頭痛の種になるかどうかです。一般的に、テーブルにNULL入力可能FK列を設定することは悪い習慣と見なされますか?

3
存在しない場合は同時に挿入
ストアドプロシージャへの挿入で並行性の問題が発生しています。手順の関連部分は次のとおりです。 select @_id = Id from table1 where othervalue = @_othervalue IF( @_id IS NULL) BEGIN insert into table1 (othervalue) values (@_othervalue) select @_id = Id from table1 where othervalue = @_othervalue END これらのストアドプロシージャを3つまたは4つ同時に実行すると、複数の挿入が発生することがあります。 私はこれを次のように修正することを計画しています: insert into table1 (othervalue) select TOP(1) @_othervalue as othervalue from table1 WITH(UPDLOCK) where NOT EXISTS …

4
シノニムを使用して、重複したテーブルを作成しないようにすることをお勧めしますか?
まったく同じデータベースのコピーが3つあります。3つのデータベースにはすべてUsersテーブルがあり、ユーザーは常に3つのデータベースすべてにまったく同じ設定で存在します。ユーザーを追加または編集する場合は、3つのデータベースを更新する必要があります。 Usersデータベース2と3からテーブルを削除し、Synonymデータベース1を指すものに置き換える方が良いでしょうか? ここに私が考えることができる長所/短所があります: 長所 簡単なメンテナンス。3つではなく1つの場所でユーザーを更新できます ユーザーIDはデータベース間で一致します(多くのアドオンアプリはUserIdに基づいているため重要です) 短所 これは標準的な手順だとは思わないでください。 ユーザーはデータベース間で同一の設定をする必要があります (下記のgbnの回答から)データベース1がダウンした場合、データベース2と3も利用できなくなります。また、復元のイベントでデータが一貫していないという潜在的な問題があります これは、テーブルだけでなく、データベース間で同一の設定を含むいくつかの異なるテーブルに対して検討しているオプションですUsers。わかりやすいので、この例ではユーザーを使用しています。

3
使用していないときにSQL Serverをオフにする最良かつ最も簡単な方法は何ですか?
状況:通常、クライアントツールを使用して他の非ローカルSQLサーバーに接続するだけの開発者ワークステーション。ただし、ローカル開発を行うためにフルバージョンのsqlサーバーを使用することが有益な場合はまれです。常にSQLサーバーを実行しているシステムリソースを無駄にしないために、クライアントツール(管理スタジオなど)の使用を許可しながら、「オフ」にする最良の方法を知りたいと思います。
13 sql-server 

7
統計の自動更新を無効にする理由は?
私が勤務しているクライアント企業が、一部のSQL Serverの統計情報の自動更新オプションをオフにすることを決定したことと、DBAがパフォーマンスの問題が発生したときに手動でトラブルシューティングすることを知りました。 しかし、この種のことは私には意味がありません。統計が更新されないようにしたいのはなぜですか?

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