<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>MS SQL Server</title><link>http://blogs.wankuma.com/chaosgate/category/2195.aspx</link><description>MS SQL Server</description><managingEditor>どんぐま</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>どんぐま</dc:creator><title>【SQL Server 2005/2008/2008 R2】テーブルの最大行サイズが許容最大サイズの 8060 バイトを超えてますか？</title><link>http://blogs.wankuma.com/chaosgate/archive/2011/06/03/199464.aspx</link><pubDate>Fri, 03 Jun 2011 22:38:00 GMT</pubDate><guid>http://blogs.wankuma.com/chaosgate/archive/2011/06/03/199464.aspx</guid><wfw:comment>http://blogs.wankuma.com/chaosgate/comments/199464.aspx</wfw:comment><comments>http://blogs.wankuma.com/chaosgate/archive/2011/06/03/199464.aspx#Feedback</comments><slash:comments>951</slash:comments><wfw:commentRss>http://blogs.wankuma.com/chaosgate/comments/commentRss/199464.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/chaosgate/services/trackbacks/199464.aspx</trackback:ping><description>&lt;p&gt;
テーブルに列を追加しようと ALTER TABLE ... としたところ、&lt;br /&gt;
下記のような警告メッセージが!!
&lt;div class="powershell"&gt;
警告: テーブル "table_name" が作成されましたが、このテーブルの最大行サイズは許容最大サイズの 8060 バイトを超えています。&lt;br /&gt;
結果として生成される行がサイズの制限を超えると、このテーブルへの INSER または UPDATE は失敗します。
&lt;/div&gt;
&lt;br /&gt;
いやいや。先日も同じ警告出たから同じテーブルから列を削除したじゃ～ないですか!!
&lt;/p&gt;
&lt;p&gt;
で、色々調べて以下のクエリを実行!!&lt;br /&gt;
&lt;br /&gt;
【クエリA】
&lt;div class="powershell"&gt;
DBCC CLEANTABLE("database_name", "table_name")
&lt;/div&gt;
&lt;br /&gt;
前後で sys.dm_db_index_physical_stats 動的管理関数を使って効果を確認♪&lt;br /&gt;
お♪avg_page_space_used_in_percent とかの数値が下がってるぅ♪&lt;br /&gt;
と、喜んだのも束の間...&lt;br /&gt;
テーブルに列を追加しようとすると、また前述の警告メッセージがぁ!!!&lt;br /&gt;
&lt;br /&gt;
... orz
&lt;/p&gt;
&lt;p&gt;
いかんいかん!!&lt;br /&gt;
(再びマニュアル調査中...)&lt;br /&gt;
コレどうよ!? 早速以下のクエリを実行!!&lt;br /&gt;
&lt;br /&gt;
【クエリB】
&lt;div class="powershell"&gt;
ALTER TABLE "table_name"&lt;br /&gt;
REBUILD;
&lt;/div&gt;
&lt;br /&gt;
テーブルに列を追加すると...&lt;br /&gt;
を!! 警告出ないじゃん♪やたっ!!
ん!?でもこの「　REBUILD　」ってパラメータ 2005 でも使えんのぉ???&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
(再びマニュアル調査中...)&lt;br /&gt;
&lt;br /&gt;
... orz&lt;br /&gt;
そうですか、2008 以降からですか...&lt;br /&gt;
2005 以降で使えるようにするには、どうしたらえぇんじゃ～!!!
&lt;/p&gt;
&lt;p&gt;
(再びマニュアル調査中...)&lt;br /&gt;
...&lt;br /&gt;
こ、今度こそぉ!!!&lt;br /&gt;
&lt;br /&gt;
【クエリC】
&lt;div class="powershell"&gt;
ALTER INDEX ALL ON "table_name"&lt;br /&gt;
REBUILD;
&lt;/div&gt;
&lt;br /&gt;
今度こそやったか!?&lt;br /&gt;
テーブルに列を追加すると...&lt;br /&gt;
を!! 警告出ないじゃん♪やたぅ!!
&lt;/p&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;
やりたい事ができたのは良かったのですが、いまひとつスッキリしません。。。&lt;br /&gt;
&lt;/p&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;
【クエリA】 と 【クエリB】(または【クエリC】) の違いは解ります。(ホントか?)&lt;br /&gt;
&lt;br /&gt;
未使用領域の返還を要求するのが【クエリA】で、&lt;br /&gt;
インデックスの再構築を行うのが【クエリB】(または【クエリC】)って事ですよね? ね?&lt;br /&gt;
&lt;br /&gt;
じゃ、【クエリB】 と 【クエリC】 の違いって何でしょう???
&lt;br /&gt;
&lt;br /&gt;
それに今回のような場合、【クエリB】(または【クエリC】)を実行するのが&lt;br /&gt;
本当に正しい対応だったのでしょうか???
&lt;/p&gt;
&lt;p&gt;
まだまだ未熟者の旅は続きます。。。
&lt;/p&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;
【追記】&lt;br /&gt;
avg_page_space_used_in_percent が 約 85% になっていたので、インデックスの再構築で良かったようです。&lt;br /&gt;
※再構成では解消できない。と、MSDNに記述があったハズ。。。アレどこだっけ^^;&lt;br /&gt;
で、avg_fragmentation_in_percent が 5 ? 30% であれば、再構成。&lt;br /&gt;
30% ? 再構築っとφ(.. )ﾒﾓﾒﾓ
&lt;/p&gt;
&lt;p&gt;
【追記】2011/06/10&lt;br /&gt;
断片化を解消するための最適な方法はコチラを参照&lt;br /&gt;
&lt;a href="http://msdn.microsoft.com/ja-jp/library/ms189858(v=SQL.90).aspx" target="_blank"&gt;インデックスの再編成と再構築&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;a href="http://msdn.microsoft.com/ja-jp/library/ms174418%28v=SQL.105%29.aspx" target="_blank"&gt;DBCC CLEANTABLE (Transact-SQL)&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://msdn.microsoft.com/ja-jp/library/ms188917.aspx" target="_blank"&gt;sys.dm_db_index_physical_stats (Transact-SQL)&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://msdn.microsoft.com/ja-jp/library/ms190273%28v=SQL.105%29.aspx" target="_blank"&gt;ALTER TABLE (Transact-SQL)&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://msdn.microsoft.com/ja-jp/library/ms188388%28v=SQL.90%29.aspx" target="_blank"&gt;ALTER INDEX (Transact-SQL)&lt;/a&gt;&lt;br /&gt;
&lt;img src ="http://blogs.wankuma.com/chaosgate/aggbug/199464.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>どんぐま</dc:creator><title>【外部ツール】秀丸エディタを登録してみた</title><link>http://blogs.wankuma.com/chaosgate/archive/2010/03/07/186886.aspx</link><pubDate>Sun, 07 Mar 2010 20:07:00 GMT</pubDate><guid>http://blogs.wankuma.com/chaosgate/archive/2010/03/07/186886.aspx</guid><wfw:comment>http://blogs.wankuma.com/chaosgate/comments/186886.aspx</wfw:comment><comments>http://blogs.wankuma.com/chaosgate/archive/2010/03/07/186886.aspx#Feedback</comments><slash:comments>887</slash:comments><wfw:commentRss>http://blogs.wankuma.com/chaosgate/comments/commentRss/186886.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/chaosgate/services/trackbacks/186886.aspx</trackback:ping><description>&lt;p&gt; Visual Studio には外部ツールとして登録しているのですが、&lt;br /&gt; SQL Server Management Studio でも連携したくなったので、設定してみました。 &lt;/p&gt; &lt;p&gt; &lt;img src="http://chaosgate.wankuma.com/img/2010/03/07_01.jpg" /&gt; &lt;br /&gt; &lt;/p&gt; &lt;p&gt; Visual Studio と設定の仕方は一緒なんですね^^;&lt;br /&gt; 早く設定すれば良かった。これでストアド書く時のイライラが少し減ります♪ &lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/chaosgate/aggbug/186886.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>どんぐま</dc:creator><title>【SQL Server 2005 Express】MSDTC のネットワーク アクセスを有効にしたい。</title><link>http://blogs.wankuma.com/chaosgate/archive/2010/02/28/186592.aspx</link><pubDate>Sun, 28 Feb 2010 16:13:00 GMT</pubDate><guid>http://blogs.wankuma.com/chaosgate/archive/2010/02/28/186592.aspx</guid><wfw:comment>http://blogs.wankuma.com/chaosgate/comments/186592.aspx</wfw:comment><comments>http://blogs.wankuma.com/chaosgate/archive/2010/02/28/186592.aspx#Feedback</comments><slash:comments>386</slash:comments><wfw:commentRss>http://blogs.wankuma.com/chaosgate/comments/commentRss/186592.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/chaosgate/services/trackbacks/186592.aspx</trackback:ping><description>&lt;p&gt; TransactionScope を利用したアプリケーションで以下のエラーメッセージが表示されました。&lt;br /&gt; &lt;div&gt; &lt;pre&gt;分散トランザクション マネージャ (MSDTC) のネットワーク アクセスは無効になっています。&lt;br /&gt;
コンポーネント サービス管理ツールを使用して、MSDTC のセキュリティ構成でネットワーク アクセスの DTC を有効にしてください。&lt;/pre&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="#1"&gt;こちら&lt;/a&gt;と&lt;a href="#2"&gt;こちら&lt;/a&gt;を参考に、設定を変更しました。&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
Express Edition 以外で開発してて、実行環境が Express Edition だと、気がつかなかったので、&lt;br /&gt;
忘れないようにφ(..)メモメモ&lt;/p&gt;
&lt;hr /&gt;
&lt;a name="#1"&gt;*1&lt;/a&gt;：Microsoft Support ID:&lt;a href="http://support.microsoft.com/?scid=kb%3Bja%3B839279&amp;amp;x=8&amp;amp;y=13" target="_blank"&gt;839279&lt;/a&gt;&lt;br /&gt;
&lt;a name="#2"&gt;*2&lt;/a&gt;：&lt;a href="http://naoko.wankuma.com/beginner/beginner_0010_winDbApp04.html" target="_blank"&gt;Windows アプリケーションでDBを更新してみよう（VS2005 TableAdapter 編） - 主婦と.NETと犬の記録&lt;/a&gt;&lt;img src ="http://blogs.wankuma.com/chaosgate/aggbug/186592.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>どんぐま</dc:creator><title>【SQL Server 2008】変更の保存を許可してください(T-T)</title><link>http://blogs.wankuma.com/chaosgate/archive/2010/01/02/184560.aspx</link><pubDate>Sat, 02 Jan 2010 13:33:00 GMT</pubDate><guid>http://blogs.wankuma.com/chaosgate/archive/2010/01/02/184560.aspx</guid><wfw:comment>http://blogs.wankuma.com/chaosgate/comments/184560.aspx</wfw:comment><comments>http://blogs.wankuma.com/chaosgate/archive/2010/01/02/184560.aspx#Feedback</comments><slash:comments>322</slash:comments><wfw:commentRss>http://blogs.wankuma.com/chaosgate/comments/commentRss/184560.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/chaosgate/services/trackbacks/184560.aspx</trackback:ping><description>&lt;p&gt; SQL Server Management Studio(以下、SSMS) でテーブルの定義を変更、保存しようとしたら&lt;br /&gt; 下図のエラーが表示されました。&lt;br /&gt; &lt;img src="http://chaosgate.wankuma.com/img/2010/01/kb_956176.jpg" /&gt; &lt;/p&gt; &lt;p&gt; サポートページ(&lt;a href="#1"&gt;*1&lt;/a&gt;)に載っていたので、φ(..)メモメモ&lt;br /&gt; &lt;pre&gt;
(引用)&lt;br /&gt;
テーブルのメタデータ構造に変更を加える場合は Transact-SQL を使用します。
&lt;/pre&gt;
&lt;br /&gt;
だそうです。&lt;br /&gt;
なお、
&lt;pre&gt;
(引用)&lt;br /&gt;
"テーブルの再作成を必要とする変更を保存できないようにする" オプションを&lt;br /&gt;無効にしてこの問題を回避しないことを強く推奨します。 
&lt;/pre&gt;
&lt;br /&gt;
って事ですが、テストで使ってるデータベースなので、無視しましたw&lt;br /&gt;
※変更の追跡機能を有効にしてる場合、しちゃダメですよぉ^^;&lt;br /&gt;
以下の情報は自己責任でよろしくぉ願いしますm(_ _)m
&lt;/p&gt;
&lt;p&gt;
SSMS の設定を変更！&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;[ツール] メニューの [オプション] をクリック。&lt;/li&gt;
&lt;li&gt;[オプション] ウィンドウのナビゲーション ウィンドウで、[デザイナ] をクリック。&lt;/li&gt;
&lt;li&gt;[テーブルの再作成を必要とする変更を保存できないようにする] チェック ボックスをオフにして、[OK] をクリック。 &lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
&lt;a name="#1"&gt;*1&lt;/a&gt;:&lt;a href="http://support.microsoft.com/kb/956176/ja" target="_blank"&gt;SQL Server 2008 でテーブルを保存するときにエラー メッセージ &amp;quot;変更の保存が許可されていません&amp;quot; が表示される&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/chaosgate/aggbug/184560.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>