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

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

1
サービスアカウントはデータベースメールを使用するためにどのような権限が必要ですか?
管理されたサービスアカウントでSQL Server 2012インスタンスを実行しています。1つのアカウントでデータベースメールを構成し、テストメールを送信しようとしていますが、サーバーのイベントログにエラーが表示されます。 データベースエンジンインスタンス= MYINSTANCE;メールPID = 2132;エラーメッセージ:データベースの更新に失敗しました。理由:EXECUTE権限がオブジェクト 'sysmail_logmailevent_sp'、データベース 'msdb'、スキーマ 'dbo'で拒否されました。 データベースエンジンインスタンス= MYINSTANCE;メールPID = 2212; 例外の種類:Microsoft.SqlServer.Management.SqlIMail.Server.Common.BaseExceptionメッセージ:データベースの読み取りに失敗しました。理由:EXECUTE権限がオブジェクト 'sp_readrequest'、データベース 'msdb'、スキーマ 'dbo'で拒否されました。データ:System.Collections.ListDictionaryInternal TargetSite:Microsoft.SqlServer.Management.SqlIMail.Server.Objects.QueueItem GetQueueItemFromCommand(System.Data.SqlClient.SqlCommand)HelpLink:NULL Source:DatabaseMailEngine SQL Serverプロセスを実行しているアカウントをsysadminにすると、このエラーはなくなり、メールは正常に送信されます。ただし、私が行ったすべての調査では、このアカウントDatabaseMailUserRoleにmsdbデータベースでの役割を与えるだけで十分であることが示唆されています。これを実行しても、同じエラーが発生します。 BOLを調べましたが何も見つかりませんでした。

1
mdfおよびldfの空き容量がデータベースの空き容量と一致しません
SSMSで、ファイルサイズに関連するプロパティを確認し、1つのデータベースの詳細を以下に示しました。ここで、値は他のプロパティと一致しません。ここで、mdf、ldf、および合計サイズのサイズは、各ウィンドウの下の他の値と一致します。ただし、追加された場合のmdfおよびldfの使用可能な空き領域は、データベースの縮小ウィンドウに表示される使用可能な空き領域およびデータベースのプロパティに表示される空き領域とは異なります。これは、どのデータベースにも当てはまります。なぜそうなのですか?誰かがこの背後にある論理を説明できますか? データベースのプロパティ: サイズ:91.31 MB 利用可能なスペース:13.40 MB データベースファイルのプロパティ: mdfサイズ:17 MB ldfサイズ:75 MB 縮小データベース: 現在割り当てられているサイズ:91.31 MB 利用可能な空き容量:13.40 MB 縮小ファイルの下-データファイル: 現在割り当てられているサイズ:16.38 MB 利用可能な空き容量:12.63 MB 縮小ファイル-ログファイル用: 現在割り当てられているサイズ :74.94 MB利用可能な空き容量:55.62 MB

3
SQLクエリ結果から大きなデータをコピーする
私のSQL Server 2008では、クエリを実行した後、データの戻り値は数百万単位という非常に大きなものになります。コピーを試みましたが、例外sqlメモリエラーが発生します。データ全体をコピーしてExcelに貼り付ける方法を教えてください。 データが整列していないため、それをtxtファイルにエクスポートしたくありません。だから私はそれを手動でコピーしてExcelに貼り付けたいです。この解決策を教えてください

2
実行に時間がかかるsp_reset_connectionの考えられる原因は何ですか?
sp_reset_connectionSQL Server Profilerで表示すると、システムストアドプロシージャの実行に数ミリ秒以上かかるのはなぜですか? SQL Serverプロファイラーを使用して運用システムから簡単なトレースを取得し、SqlNexusを使用してそれを分析しました。SqlNexusは、sp_reset_connectionの累積期間が最も長く、トレース全体の33%であることを示しています。観測された期間は0〜7秒(12〜6,833,270マイクロ秒)の範囲ですが、平均は0.956秒です。 プールされた接続が再利用されるときにsp_reset_connectionが呼び出されていることを理解しています。これは無関係なトレースが原因で発生する可能性があるという提案を見ましたが、そうではないようです。 私はsprocが呼び出されたときにサーバーが何をしているかを読みましたが、この場合問題があるとは思いません-コードは、開いたトランザクションやクリーンアップする必要がある巨大な一時テーブルを残していません。 また、https://serverfault.com/questions/199974/sp-reset-connection-taking-a-long-time-to-runも確認しましたが、役に立ちませんでした。 編集(2013-12-23): すべてのケースで、読み取りと書き込みは0で、CPUはほぼ常に0です(ゼロ以外のCPUのインスタンスは2つだけで、どちらも16msです)。

4
SQL Serverは起動していますが、どのポートでもリッスンしていません
SQL Server 2012を新しくインストールしました。データベースはまだ作成されていません。そして、sa / passwordでManagement Studioを開くことができます。Binn \ sqlservr.exeはサービスとして開始され、サービスリストで開始されていることがわかります。ただし、以下のように確認したところ、それは1433ポートをリッスンしておらず、デフォルトでどのポートもリッスンしていませんでした。 tasklist|find /I "sql" 私は得ました: sqlservr.exe 5668 Services 0 40,112 K 5668はPIDだと思います。そして、PID = "5668"を取得するには、どのポートをリッスンしていますか。 netstat -ano | find /I "5668" でも、空白以外は何もありませんでした。一方、このサイトで投稿を検索した後、SQL Serverの構成を再確認しました。スタート->すべてのプログラム-> Microsoft SQL Server 2012->構成ツール-> SQL Server構成マネージャー-> SQL Server SQL Native Client 11.0構成->クライアントプロトコル-> TCP / IP->デフォルトポート1433。SQLServer(MyInstanceName)、SQL Server Agent(MyInstanceName)、SQL Server Browserの3つのサービスがあります。最後の2つは停止されます。 SQL Server構成マネージャー-> …

1
SQL Sentry Plan ExplorerはUDFの読み取りをカウントしますか?
次のようなクエリがあります。 select dbo.fn_complexFunction(t.id) from mytable t SQL Sentry Plan Explorerで、クエリプランにUDFを含めるには、SQL SentryでGet Estimated Planを実行する必要があることに気付きました。 「実際のプランを取得」を実行すると、論理読み取りやその他のメトリックにUDFで発生する操作が含まれているように見えません。このような場合、プロファイラーを使用する唯一の回避策はありますか?

1
本番サーバーでsp_updatestatsを実行すると、どのような影響がありますか?
運用sp_updatestats環境のSQL Serverで実行しても安全ですか? または、SQLサーバーのすべての統計を更新すると、どのような影響がありますか?SQLサーバーを実行中に「チョーク」して、ユーザーにタイムアウトやその他の問題を引き起こすことはできますか?

2
SQL ServerエージェントでのPowershellスクリプトの実行エラー
SQL Serverエージェント(SQL Server 2012 Enterpriseの実行)を介して実行されるSQLジョブがあります。ジョブの最後のステップは、ネットワーク共有にあるアプリケーションを実行することです。残念ながら、アプリケーションが入っているフォルダーの名前(フォルダーはバージョン番号です)がわからないので、PowerShellを使用して検索します。 set-location "\\server\companydocuments\MyApp\Application Files\" $name = Get-ChildItem | sort name -desc | select -f 1 | select name cd $name.name & ".\Application.exe" SQL ServerでPowerShellウィンドウを開くと、正常に動作します。これをSQL Serverエージェントで実行すると、次のエラーが発生します。 A job step received an error at line 1 in a PowerShell script. The corresponding line is 'set-location "\\server\companydocuments\MyApp\Application Files\'" アクセス許可の問題かもしれないと思ったので、資格情報(運用サーバーではなくテストサーバー)でSQL …

1
SQLの最小限のロギング条件
このページhttp://technet.microsoft.com/en-us/library/dd425070(v=sql.100).aspxで行われた要求をテストするためのスクリプトを作成しました。最小限のロギングが行われるか、行われません。 このスクリプトを使用すると、さまざまな種類の挿入ごとのログレコード長の合計は次のようになります。 ヒープが空でタブロックなし60000 タブロック56000でヒープが空 ヒープは空ではなく、タブロックはありません60000 タブロック56000でヒープが空ではない ヒープとインデックスが空でタブロックがない126188 ヒープとタブロック114188で空のインデックス ヒープとインデックスが空ではないタブロックなし138696 タブロック112000でヒープとインデックスが空ではない 空のクラスターがタブロックなしで注文された64168 タブロック56168で空のクラスターを注文 クラスターが空で順序付けられていないタブロックなし73388 タブロック65388でクラスタが空の順序なし クラスターが空ではなくタブロックがない63912 タブロック55944で空でないクラスター クラスターとインデックスが空でタブロックがない124336 クラスターとタブロックで空のインデックス108336 クラスターとインデックスが空ではないタブロックなし123876 タブロック107924でクラスターとインデックスが空ではない これらの数値のいくつかは、technetページの表と一致していないようです。特に: 空のテーブルへの挿入と空でないテーブルへの挿入の間にロギングに違いはないようですが、タブロックなしで非空のクラスターに挿入すると完全なロギングがあるはずですとページは主張します tablockを使用して、indexを使用してヒープまたはクラスターに挿入すると、ロギングが削減されるように見えますが、ページでは完全なロギングが必要であると主張しています。 挿入のSELECT INTOメソッドを使用する場合、fn_dblogには操作が挿入である行はありませんが、ページにはこのメソッドが、表に記載されている動作を持つはずのバルクロード操作としてリストされています。 参考までに、これはSQL Expressデータベースで実行されました。DBCCTRACESTATUS(610)を実行すると、すべてが0です。 なぜ私がこれらの矛盾を目にする可能性があるのか​​を説明するのを手伝ってくれる人はいますか? 参考までに、コードを以下に示します。 SET NOCOUNT ON CREATE TABLE numbers (num INT) CREATE TABLE numbersUnordered (num INT) Declare @cnt int Select @cnt=0 while (@cnt<500) BEGIN …

1
STATISTICS_NORECOMPUTEの使用の妥当性
最近、いくつかの興味深いインデックスの問題がある一連のデータベースの保守に携わってきました。私を最も悪化させるものの1つは、開発、テスト、モデル、および生産マシン間のインデックスの違いです。違いによりクエリのチューニングが難しくなるため、クエリの同期は私の最初のプロジェクトの1つです。 テスト環境とモデル環境を比較したところ、モデル環境のほとんどのインデックスがSTATISTICS_NORECOMPUTE設定されているのONに対し、テスト環境のインデックスはそうではないことに気付きました。すべての環境で、すべてのデータベースの統計を更新する夜間ジョブがあります。 私はこれまでに対処したことがないSTATISTICS_NORECOMPUTEので、ここに私の質問があります。この設定を扱う際のベストプラクティスはありますか?1日の終わりに統計の更新を行っている場合STATISTICS_NORECOMPUTE、すべての環境ですべてのインデックスをオンにするのが最善ですか?それとも、正当な理由がないのですか? 編集:私はここでこの件に関するキンバリートリップのブログの1つを見つけましたが、それSTATISTICS_NORECOMPUTEはせいぜい控えめに使用する必要があることを示唆しているようです。しかし、私はまだそれをグローバルにオフにすることを心配しています。誰かがこれを試しましたか、そして彼らは何を経験しましたか?

1
SELECTにユーザーを許可することと、ユーザーをdb_datareaderロールに追加することの間に違いはありますか?
私は許可するように頼まれたSELECT、INSERTおよびUPDATEデータベース内のすべてのテーブルに対して、特定のユーザーへ。私はにユーザーを追加することになったdb_datareaderし、それらを付与INSERTし、UPDATEデータベースレベルで。 しかし、それは私に考えさせSELECTました、データベースレベルでユーザー権限を付与することと、それらをdb_datareaderロールに追加することの違いは(もしあれば)何ですか?そして、何らかの方法でベストプラクティスはありますか?

1
変更の追跡の内部はSQL Server 2008から2012に変更されましたか?
切断されたデバイスと中央データベースサーバーの同期に関する問題のトラブルシューティングで、サーバーでSQL Server 2012にアップグレードした後に問題が発生しています。CHANGE_TRACKING_MIN_VALID_VERSIONは、本来よりも1大きい(または少なくともアップグレード前の値よりも)高い値を返しているようです。 簡単な例を設定する方法の例として、Arshad Aliのすばらしいウォークスルーの例を使用して作業してきました。 #1から#5までのスクリプトを実行して、SQL Server 2008環境と2012環境の両方で、Employeeテーブルの行を挿入、削除、および更新しました。 2008年、次のステートメントは0を返します。 SELECT CHANGE_TRACKING_MIN_VALID_VERSION(OBJECT_ID('Employee')) 2012年は1を返します。 テストでさらにいくつかのスクリプト(6〜8)を使用して作業する場合は、保持期間を1分に設定して、クリーンアップアクションを強制的に実行できるようにします。私はその日出発し、どうやらそれは一晩走ったようです。 2008年のインスタンスでは、CHANGE_TRACKING_CURRENT_VERSIONとCHANGE_TRACKING_MIN_VALID_VERSIONは等しくなります(11)。2012年のインスタンスでは、CHANGE_TRACKING_MIN_VALID_VERSIONはCHANGE_TRACKING_CURRENT_VERSION(11)よりも1つ高く(12)あります。これは、データベースが長時間アイドル状態のときに同期プロセスに影響を与える可能性があります。そして、特に次のテストを実行して、同期ではなく再初期化が必要かどうかを判断する場合に、プロセスがループに巻き込まれる可能性があることを発見しました。 IF CHANGE_TRACKING_MIN_VALID_VERSION(object_id(N'dbo.Employee')) > @sync_last_received_anchor RAISERROR (N'SQL Server Change Tracking has cleaned up tracking information for table ''%s''... 他の誰かがこの行動の変化を経験しましたか?誰か説明がありますか?

1
SqlPackageがプロファイルから変数を取得しない
.dacpacとsqlpackage.exeを使用してデータベースをアップグレードしたい ここに私がsqlpackageを実行する方法があります: SqlPackage.exe /Action:Publish /SourceFile:"my.dacpac" /Profile:"myprofile.publish.xml" 私が得るエラーは: *次のSqlCmd変数はターゲットスクリプトで定義されていません:foo。 myprofile.publish.xmlファイルにその変数が含まれていることを確認しました: <ItemGroup> <SqlCmdVariable Include="foo"> <Value>bc\local</Value> </SqlCmdVariable> また、dacpacを作成するプロジェクトがVisual Studio内から myprofile.publish.xml 他に何が欠けているのでしょうか? (私はSQL Server 2012を使用しています)

1
IO_STALLの質問と理解
5分ごとにsys.dm_io_virtual_file_statsからIO_STALLSを収集してから、デルタを実行して、IOの影響を最も受けているファイルを確認しています。 1つの5分の期間で、5826331ミリ秒のデルタ、つまり97分が得られます。 私はこれに少し混乱しています。これは、97分前に開始された操作がその時点で終了し、その待機時間を記録したということですか? ありがとう 要求に応じてコードを追加: /* USE [SysDBA] GO */ /****** Object: Table [dbo].[DISKIOPS] Script Date: 04/07/2013 11:40:15 ******/ /* DROP TABLE [dbo].[DISKIOPS] GO */ --Create the table /****** Object: Table [dbo].[DISKIOPS] Script Date: 04/07/2013 11:40:15 ******/ /* SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO …

2
デフォルトのトレースは有効ですがアクティブではありません
デフォルトのトレースの構成を照会すると、有効になっていることが表示されます。 exec sp_configure 'default trace enabled'; --> name minimum maximum config_value run_value default trace enabled 0 1 1 1 しかしsys.traces、パスを照会すると、空の行セットが返されます。 select * from sys.traces; 有効なトレースが存在しない理由は何ですか?

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