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

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

2
この「マッピング」テーブルには別のId列が必要ですか?
の表Producersとの表がありProducts、どちらも次の形式です。 Id -int、主キー Name -nvarchar プロデューサーは複数の製品を運ぶことができるため、次のようなテーブルを作成しましたProducerDetails。 ProducerId -int、外部キー Producers.Id ProductId -int、外部キー Products.Id それから自分に問いかけ始めたので、専門家に聞いてみようと思いました。テーブルに追加のId(int、主キー)列がある方がデータベース設計が優れてProducerDetailsいるでしょうか?それとも不要ですか? SQL-Server 2008 R2を使用しています。 編集 -これらのテーブル間の関係は多対多だと思います。申し訳ありませんが、明確にしていません。生産者は複数のタイプの製品を運ぶことができ、同じ製品が複数の異なる生産者によって生産される可能性があります。 この質問が非常に単純である場合はお詫び申し上げます。参照整合性/データベース設計は私の強みではありません(私はそれを改善しようとしていますが)。

3
テーブルの列の順序を識別する方法
テーブルの列をテーブル定義順にリストする必要があります。 select * from syscolumns where id = object_id('MyTable') --order by colid 調べることでsyscolumns、テーブルの2つの列は、関連を見て:colidとcolorder。syscolumnsに関するMSDNの記事によれば、 colid | smallint | Column or parameter ID. colorder | smallint | Identified for informational purposes only. | Not supported. Future compatibility is not guaranteed. 走ってみた select * from syscolumns where colorder <> colid これは行を生成しなかったので、これらの列にはほとんどの場合同じ値があると思います。 最も安全な方法は、colidを使用することです。しかし、私は知りたいと思います:これらの2つの列の間に違いはありますか、ある場合、この違いは何ですか? また、MSDNの記事では、colidがテーブル定義の順序を反映していることは確認されていません。これが事実であると想定することは合理的ですが、そうであると確信している場合、どのようにこれがそうであるかをどのようにして知ることができますか?

2
データベースのシステム以外のすべてのビューのみへのアクセスをユーザーに許可する方法はありますか?
SQL Serverでは、特定のデータベースにユーザーがいて、データベースのシステム以外のすべてのビューへのアクセスのみを許可するように求められました。これは、ビューのタイプのセキュリティ保護可能な要素を編集し、それぞれに選択を許可することで実行できると思いますが、ビューはたくさんあります。これを達成するためのより効率的な方法はありますか?


2
SQL Serverのメンテナンスタスクに役立つPowerShellスクリプトのコレクションはありますか?
私はPowerShellを研究しており、日々のDBAタスクに(ゆっくりと)取り入れています。 これまでのところ、多くの異種の管理アクティビティーのために切断されたPowerShellスクリプトの束を見てきました。 私が知りたいのは、一般的なDBAアクティビティ(Ola HallengrenのT-SQLスクリプトのようなもの)のSQL Server PowerShellスクリプトに通常アクセスする公式(または認識可能な)PowerShellスクリプトコレクションまたはリポジトリがあるかどうかです。

1
SPARSEを追加すると、テーブルがはるかに大きくなります
約5m行の汎用ログテーブルがあります。 イベントタイプを格納する「厳密に型指定された」フィールドと、イベントに関連するデータを含む一連の「緩やかに型指定された」列があります。つまり、これらの「緩やかに型付けされた」列の意味は、イベントの型によって異なります。 これらの列は次のように定義されます。 USER_CHAR1 nvarchar(150) null, USER_CHAR2 nvarchar(150) null, USER_CHAR3 nvarchar(150) null, USER_CHAR4 nvarchar(150) null, USER_CHAR5 nvarchar(150) null, USER_INTEGER1 int null, USER_INTEGER2 int null, USER_INTEGER3 int null, USER_INTEGER4 int null, USER_INTEGER5 int null, USER_FLAG1 bit null, USER_FLAG2 bit null, USER_FLAG3 bit null, USER_FLAG4 bit null, USER_FLAG5 bit null, USER_FLOAT1 float …


1
トランザクションログとバイナリログの違いは何ですか?
SQL Serverショップから来て、今はMySQLを使用しています。 MySQLのバイナリログとMSSQLのトランザクションログの違いは何ですか? これまでの見通しでは、MSSQLのようにデータベースごとのトランザクションログとは対照的に、MySQLインスタンスごとに1つのバイナリログしかないようです。

5
スキーマの過剰使用/正しい使用?
尋ねたこれで質問をStackOverflowの、私は私が行っていることは正しいです/ベストプラクティスを疑問に思いました。 基本的に、私が作成するすべてのオブジェクトは、使用法を反映するスキーマ名を持つスキーマに入ります。たとえば、私にはスキーマAuditとAdmin(特に)があります。 これにより、にオブジェクトが残りませんdbo。これでいい?他に必要なことはありますか?

4
SQL 2008 R2は、Windowsユーザーがテーブルを作成するときにユーザー/スキーマを作成します
次のスクリプトを使用して、WindowsグループをSQL 2008 R2インスタンスにマップするサーバーログインとデータベースユーザーを追加しました。匿名のために名前を変更しました。 USE master go CREATE LOGIN [DOMAIN\AppUsers] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english] go USE AppDb go CREATE USER [DOMAIN\AppUsers] FOR LOGIN [DOMAIN\AppUsers] go EXEC sp_addrolemember N'db_owner', N'DOMAIN\AppUsers' go DOMAIN \ User1アカウントがアプリにログオンすると、User1はDOMAIN \ AppUsersのメンバーであるため、User1はdboスキーマのテーブルに問題なくクエリを実行しますが、このアプリではユーザーがテーブルを作成することもできます。スキーマを指定せずにこれらのテーブルを作成すると、SQL Serverは次のことを行います。 インスタンスのSSMS \ Security \ Loginsにリストされていない 'DOMAIN \ User1'ログインを使用するAppDbに 'DOMAIN \ User1'ユーザーを作成します。 AppDbに「DOMAIN \ User1」スキーマを作成します。 …

2
UUIDのデフォルト値で一意の列を作成する方法
内部で使用するためのキー列がありますが、これは増加する整数ですが、UUIDである2番目の一意の列が欲しいのですが、デフォルト値を呼び出す関数を持つ方法がわかりません(SQLサーバーはJavaではなくUUIDを作成しています)、これについて私に提案できるドキュメントはありますか?

3
SQL Server 2008データベースのトランザクションログを切り捨てる方法を教えてください。
SQL Server 2008データベースのトランザクションログを切り捨てる方法を教えてください。 可能な最善の方法は何ですか? 私は次のようにブログからこれを試しました: 1)データベースの設定から単純な回復、ファイルの圧縮、そして完全な回復の設定に至るまで、実際には貴重なログデータが失われており、特定の時点に復元することはできません。それだけでなく、後続のログファイルを使用することもできなくなります。 2)データベースファイルまたはデータベースを縮小すると、断片化が追加されます。 できることはたくさんあります。最初に、ログを切り捨てて頻繁に失うのではなく、次のコマンドを使用して適切なログバックアップを開始します。 BACKUP LOG [TestDb] TO DISK = N'C:\Backup\TestDb.bak' GO ファイルを縮小するコードを削除します。適切なログバックアップを行っている場合、ログファイルは通常(通常、特殊なケースは除外されます)大きくなりません。

3
SQL Server-非ブロッキングselectステートメントの分離レベルは何ですか?
SQL Server 2008 R2のテーブルで一部の削除、更新、および挿入を実行する長時間実行トランザクション(たとえば、T1と呼ばれます)があります。同時に、別のプロセスが定期的にこのテーブルの選択ステートメントを実行します。 デフォルトの分離設定(READ COMMITTEDだと思いますか?)では、T1は、トランザクションがコミットまたはロールバックされるまで、selectステートメントの実行をブロックします。 私が見たいのは、トランザクションが進行中でも、selectステートメントが一貫したデータで機能することです。スナップショット分離が役立つと思いますが、正しい方向に進んでいるかどうかはわかりません。これは、このアプリケーションに最適な分離レベルでしょうか? 次に、selectステートメントを呼び出しているプロセスを制御することはできませんが、T1を呼び出す.NETアプリケーションを制御します。selectステートメントとT1の両方で分離レベルの変更が必要ですか、それともT1だけを別の分離レベルとしてマークするだけで十分でしょうか?

3
SQL Serverのメモリを解放する方法
ローカルコンピューターにSQL Serverサンドボックスがインストールされています。SQL Serverインスタンスが使用できるメモリを1000 MBに設定しました。集中的な操作を実行すると、メモリ使用量が最大1000 MB増加します。操作が終了しても、SQL Serverはまだメモリを保持しています。このメモリ予約を解放する方法は?

2
アドホックで実行した場合とストアドプロシージャで実行した場合、コードは異なるプランを作成します
ストアドプロシージャ内で実行するときに不適切なプランを使用する削除ステートメントがありますが、アドホックで実行するときにはるかに優れたプランを選択しています。 クエリで使用されるテーブルのすべてのインデックスを再構築し、すべてのキャッシュを削除しました。オプティマイザは引き続き、ストアドプロシージャに対して誤ったプランを選択します。 オプティマイザがストアドプロシージャとアドホックSQLで異なる実行プランを使用している理由を知りたいのですが。 更新:私はそれが結局のところパラメータだったに違いない-私がハードコードされた変数でアドホックコードを実行したとき、私は正しい値(それは日付であり、1年前の値です)で「悪い」計画を得ることができます「良い」計画を生み出すようです)。次に、クエリヒントを使用して、プロシージャに "適切な"プランを強制しようとします。 解決策:OPTIMIZE FOR UNKNOWNヒントを使用して、目的の計画を取得することになりました。

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