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

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

2
SQL Agent PowerShellコンテキストリファレンス
私の新しい仕事では、各サーバーに複数の名前付きインスタンスがあります。例えば Server1 \ Dev Server1 \ DevIntegrated Server1 \ QA OSを呼び出すSQL PowerShellスクリプトがあり、呼び出しますFoo.exeが、コマンドラインパラメーター(接続文字列)を渡す必要があります。SQLエージェントジョブは各インスタンスに存在し、PowerShellタイプのステップで、現在のコンテキストが何であるかを知る必要があります。つまり、この実行はDevIntegratedで始まりました。 すべてのスクリプトを最初から始めたいとは思いません... $thisInstance = "Dev" ...特に、今後数か月で環境(新しいサーバーと名前付きインスタンス)に移行するときに編集する必要があるためです。 SQLPSを起動すると、Get-Locationまたは実行の結果をスライスしてダイシングすることにより、インスタンスを特定できます。 (Invoke-Sqlcmd -Query "SELECT @@servername AS ServerName" -SuppressProviderContextWarning).ServerName SQLエージェントがPowerShellタイプのジョブを開始すると、C:\ windows \ system32で開始さGet-Locationれ、SQLSERVERコンテキストではないため、ルートは機能しません。そのコンテキストに変更できますが、SQL Serverの「ルート」にいるので、どのインスタンスにいるべきかわかりません。Invoke-Sqlcmdルートを使用しても同じ理由で機能しません(技術的には、デフォルトのインスタンスではありません) 私の知る限り、ジョブログに記録できる基本的な「もの」をすべて列挙しましたが、何も表示されないようです SQLSERVER:\SQL\Server1\DevIntegrated Get-ChildItem Get-Host Get-Location Get-Process Get-PSDrive Get-PSProvider Get-Service Get-TraceSource Get-Variable Get-Process私はそれと、インスタンスをヒットしてspidを一致させることによって物事を一緒にしようとするいくつかのブードゥー教を使用することができるようですが、それは地獄からの血まみれのハックのように聞こえます。私が見逃している基本的なものがあるはずです、誰かが光を当てることができますか? 調査されたPowerShellの代替 他のジョブタイプを使用して調査したところ、満足のいく解像度が得られませんでした。調査の結果、SQL Agentの下にリストされているPowerShellはSQLPSであり、Agentを右クリックしてインスタンスを起動すると、自動的に正しい場所にドロップされました。前述のように違いを知ったのは、ジョブコードに対話型コードを貼り付けたときだけです。 OSのジョブタイプは、どのインスタンスがコマンドシェルにドロップしたかを判別する方法を見つけることができなかったという点で、同じ状態になりました。もちろん、sqlcmdで値を取得できますが@@servername、sqlcmdを開始する接続がわかっていれば、データベースを照会する必要はありません;) TSQLは有効にすればおそらく動作する可能性xp_cmdshellがありますが、オンになっているかどうかはわかりません。それでも、私は動的SQLに夢中になり、PowerShellが提供する表現力とパワーの多くを失います。 少し不格好ですが、最初のステップで変数を定義し、それを後続のステップに渡すことを考えましたが、この記事で複数のジョブステップの処理(BOL) ジョブステップは自己完結型でなければなりません。つまり、ジョブは、ジョブステップ間でブール値、データ、または数値を渡すことはできません。ただし、永続テーブルまたはグローバル一時テーブルを使用して、1つのTransact-SQLジョブステップから別のステップに値を渡すことができます。ファイルを使用して、あるジョブステップから別のジョブステップに実行可能プログラムを実行するジョブステップから値を渡すことができます。 よく知られたファイル/環境変数/レジストリ設定のような一般的なトリックを使用することはできませんFoo.exe。 …


1
SQL Server / T-SQLは長い文字列を分割するために行継続をサポートしていますか?
私は、1つ以上の非常に長い(時には愚かな長い)文字列を含むSQLスクリプトを使用していることがあります。通常、これらはVARBINARYファイル/アセンブリを表すリテラル/定数ですが、テキストの場合もあります。 本当に長い文字列の主な問題は、一部のテキストエディターでは文字列をうまく処理できないことです。たとえばVARBINARY、CREATE ASSEMBLY [AssemblyName] FROM 0x....ステートメントで使用するリテラルがあり、アセンブリ自体のサイズは1 MBをわずかに超えています。これは、各バイトが16進表記で表されるために2文字を必要とするため、テキストファイルでは200万文字を少し上回ります。 (例0x1F= a 1およびan F)。SQL Server Management Studio(SSMS)はこれをうまく処理せず、その行をスクロールしようとすると数秒間ハングします。実際、一部のバージョン(これがまだ発生するかどうかは不明)では、特定の長さの行が少なくとも1行あるスクリプトを開くと、長い行に関する警告が表示されることもあります。 2番目の問題は、ワードラップを有効にせずにエディターで使用したり、オンラインで投稿したりすると、フォーマットが複雑になることです。ここでの問題は、水平スクロールバーのスライダーが非常に狭く、通常は少しでもそれを移動すると、非超長いテキストがスクロールして見えなくなるということです。 現在、T-SQLはコマンドを改行またはセミコロンで終了しません(SQL Server 2005以降、セミコロンが推奨/推奨されています)。したがって、SQL Serverは各ステートメントを解析する方法を知っているので、いつ終了するかがわかるので、newline/ carriage-return+ だけで区切られた長い行を複数の行に分割するline-feedように見えるのは、不合理に見えません。しかし、これはどちらの場合でも機能しません。 PRINT 'Line1 Line2'; 戻り値([メッセージ]タブ): Line1 Line2 そして、改行はリテラル/定数内にあるので、それは十分に理にかなっています。しかし、これを行うことVARBINARYもできません。 PRINT 0x1234 5678; エラーが出ます。

4
SQL Server-インスタンス名とインスタンスIDの違い
SQL Serverのインスタンスとは少し混乱しています。インスタンス名とインスタンスIDは異なるプロパティですが、インスタンスIDはデフォルトでインスタンス名の大文字バージョンになっている傾向があります。インストールでは、IDに名前とは異なる値を設定できますが、通常は同じです。 明らかに、IDは内部参照を指し、名前はユーザーフレンドリーな参照を指します。しかし、2つの間の基本的な違いは何ですか?どちらを使用するのか。 カスタムインストールプロセスからクライアントのサーバーマシンにSQL Server 2008 R2 Expressを展開/インストールするときに、これを理解する必要があります。
13 sql-server 

3
SQL ServerのERROR_STATE()とは何ですか?
私は読み取りERROR_STATE()エラーの同じタイプが発生する可能性がソースコードにおける異なる状態/位置を区別するために缶の助けを。しかし、それがどのように役立つかは、私にははっきりしていません。 MSDNの状態: ERROR_STATE() TRY…CATCHコンストラクトのCATCHブロックが実行される原因となったエラーの状態番号を返します。 実際にどのように使用できますか?誰かが私に例を示すことができますか?このリファレンス記事で提供されているものは本当に私に物事をうまく説明するのに役立ちませんか?

4
「View Server State」のセキュリティとパフォーマンスへの影響
この質問は、さまざまなDMV(動的管理ビュー)には「サーバー状態の表示」権限が必要であることを指摘していますが、あなたが誰をしていて、その権限を付与したくないかについては何もわかりません。 もちろん、私は「最低限のアクセス許可」と、それを誰にも付与したくない理由を理解していますが、付与する必要があるかどうかを評価する方法についてのガイドはありません。 だから、私の質問:ユーザーに「サーバー状態の表示」権限を付与することのセキュリティとパフォーマンスへの影響は何ですか?許可されるべきではないことを彼らが何ができるか... 更新:1つの影響は、ユーザーがDMVを使用してクエリを確認できることです。クエリまたはクエリパラメータに、ユーザーが見ることができない機密情報を含めることができる場合、VIEW SERVER STATEを許可すると、そうすることができます(つまり、dob =またはssn =)。
13 sql-server 

4
「TASK MANAGER」プロセスは、シングルユーザーモードのデータベースを引き継ぎます。それは何ですか?
これは私がstackoverflowで尋ねた質問の複製ですが、私はここにいる誰かが何が起こっているのかより良い考えを持つことができるとアドバイスされました。 .NET SqlConnectionを使用してシングルユーザーモードでSQL Serverをアップグレードするとき、SQLコードが実行されている間に他のアプリケーションがデータベースにログインして散発的に問題が発生し、プロセスが開始されます。SqlConnectionが閉じられたり、破棄されたりすることはありません。しかし、他のいくつかのアプリケーションはどういうわけかデータベースに接続してしまい、それが私の接続を開始します。 sp_whoを実行すると、データベースを制御するプロセスがCommand = "TASK MANAGER"であることがわかりました。 誰もがこのプロセスとは何か、その目的は何か、そして世界中でどのようにしてシングルユーザーモードのデータベースにアクセスでき、アクティブな接続があるかを教えてもらえますか?

1
Mergeステートメントのロックオプションは何ですか?
MERGEステートメントを実行するストアドプロシージャがあります。 マージを実行すると、デフォルトでテーブル全体がロックされるようです。 トランザクション内でこのストアドプロシージャを呼び出して、他の処理も実行していて、影響を受ける行のみをロックしたい場合。 ヒントを試しMERGE INTO myTable WITH (READPAST)てみましたが、ロックが少なかったようです。しかし、ms docに、主キーでさえもバイパスして重複キーを挿入する可能性があるという警告がありました。 これが私のテーブルスキーマです: CREATE TABLE StudentDetails ( StudentID INTEGER PRIMARY KEY, StudentName VARCHAR(15) ) GO INSERT INTO StudentDetails VALUES(1,'WANG') INSERT INTO StudentDetails VALUES(2,'JOHNSON') GO CREATE TABLE StudentTotalMarks ( Id INT IDENTITY PRIMARY KEY, StudentID INTEGER REFERENCES StudentDetails, StudentMarks INTEGER ) GO INSERT INTO …


4
SSISDBカタログを作成できません
SQL Server 2014統合サービスでカタログを作成しようとすると、以下のエラーが発生します。インストールや他の場所で私が見逃したものはありますか? カタログバックアップファイル 'C:\ Program Files \ Microsoft SQL Server \ 120 \ DTS \ Binn \ SSISDBBackup.bak'にアクセスできませんでした。データベースファイルが存在し、SQL Serverサービスアカウントがそれにアクセスできることを確認してください(Microsoft.SqlServer.IntegrationServices.Common.ObjectModel)

4
ストアドプロシージャで動的SQLを使用したくないのはなぜですか?
動的SQLを使用したくないと言った人がいました。具体的な例や実際の例を挙げていただけますか?個人的には、データベースに数回コーディングします。柔軟性があるので大丈夫だと思います。私の推測では、SQLインジェクションまたはパフォーマンスについてです。他に何か?

6
オペレーティングシステムがエラー21を返しました(デバイスの準備ができていません。)
Windowsを再起動するたびに、一部のデータベースで次のエラーが発生します。 オペレーティングシステムがエラー21を返しました(デバイスの準備ができていません。) 私はディスクをチェックしましたchkdsk /r-不良セクターはありません。 DBCC CHECKDBエラーなしで実行しました: *(CHECKDB found 0 allocation errors and 0 consistency errors in database)* SQL Serverを再起動すると、エラーが消えます。 Windows 10およびSQL Server 2016 Express。

1
特定の列への依存関係の検索(sysdependsを使用しない現代的な方法)
特定のテーブルだけでなく、テーブル内の特定の列を使用するすべてのビューとストアドプロシージャを見つける必要があります。 次のように機能すると思われますが、この方法を使用する場合は注意が必要な警告が多数あります(さまざまな理由で信頼性が低く、すぐに非推奨になるなど)。 SELECT object_name(so.id) TableName, sc.name ColumnName, OBJECT_NAME(sd.id) DependentObjectName, (SELECT xtype FROM sysobjects so WHERE so.id = sd.id) Object_Type FROM sysobjects so INNER JOIN syscolumns sc ON so.id = sc.id INNER JOIN sysdepends sd ON so.id = sd.depid and sc.colid = sd.depnumber WHERE object_name(so.id) = 'MyTableName' AND sc.name = 'MyColumnName' …
13 sql-server 

6
非常に大きな主キーインデックスを再構築する
AzureでホストされているSQLデータベースがあります。問題は、サイズが制御不能になっていることです。主キーのクラスター化インデックスで最大99%の断片化が見られます。 他のすべてのインデックスをonline=onオプションで再構築できますが、パフォーマンスには影響しません。PKクラスター化インデックスの1つのサイズが200GBを超えているため、この1つでREBUILD...WITH (ONLINE=ON)はロックが発生します。 すべてのタイムゾーンのユーザーがサイトにアクセスしているため、オフラインでインデックスを再構築できる時間を見つけることができません。 サイトでダウンタイムを発生させずに大きなインデックスを再構築するための最良の戦略は何ですか? 断片化は99%なので、再編成しても効果がないと思います。問題は、オンラインでもテーブルがロックされることです。主な問題は、インデックスが200GBを超えることです。主キーは整数です。

2
SQL Serverの別のテーブルの値を使用してテーブルを更新する
データベースに2つのテーブルがあります。 表1 ------------------------------------------------------------------------- | name | family | phone | email | gender | phone2 | address | birthdate | ------------------------------------------------------------------------- テーブル#2 ----------------------------------------- | gender | address | phone | birthdate | ----------------------------------------- テーブル#1の列ではaddressとphone2は空で、列の性別と生年月日の値はテーブル#2と同じです。 どのように私はテーブル#2及び更新からデータを読み取ることができますアドレスとphone2のテーブル#2からの値を持つテーブル#1でのアドレスと電話するとき、列を性別と誕生日が各行に同じですか? 例:これは表#1の一部のデータです ------------------------------------------------------------------------- | name | family | phone | email | gender | phone2 | …

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