<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/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>SQL Server</title>
        <link>http://blogs.ugidotnet.org/franx_blog/category/SQL Server.aspx</link>
        <description>SQL Server</description>
        <language>it-IT</language>
        <copyright>Francesco Geri</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>Eseguire lo Shrink del database di contenuto di WSS</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2008/12/04/94856.aspx</link>
            <description>&lt;p&gt;Come fare ad eseguire lo shrink del database di contenuto di WSS, quando WSS utilizza l'istanza di Sql Server propria (quella che crea il setup di WSS)?&lt;/p&gt;  &lt;p&gt;Il problema è che da SQL Server Management Studio non ci si può connettere all'istanza di SQL Server de iWSS (almeno questo mi risulta).&lt;/p&gt;  &lt;p&gt;Allora si può ricorrere alla linea di comando.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Aprire il prompt dei comandi&lt;/li&gt;    &lt;li&gt;Posizionarsi sulla cartella (SQL Server 2008):     &lt;br /&gt;      &lt;br /&gt;&amp;lt;drive&amp;gt;:\Program Files\Microsoft SQL Server\90\Tools\Binn      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;eseguire il comando:     &lt;br /&gt;      &lt;br /&gt;sqlcmd -S &lt;em&gt;&lt;font color="#0080c0"&gt;MY_SERVER\MICROSOFT##SSEE&lt;/font&gt;&lt;/em&gt; -q "dbcc shrinkdatabase(&lt;em&gt;&lt;font color="#0080c0"&gt;MY_WSS_CONTENT_DB&lt;/font&gt;&lt;/em&gt;)"&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Dove:&lt;/p&gt;  &lt;p&gt;&lt;font color="#0080c0"&gt;&lt;em&gt;MY_SERVER\MICROSOFT##SSEE&lt;/em&gt;&lt;/font&gt;&lt;font color="#000000"&gt; è l'istanza di SQL Server&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0080c0"&gt;&lt;em&gt;MY_WSS_CONTENT_DB&lt;/em&gt; &lt;font color="#000000"&gt;è il database di WSS&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Naturalmente ringrazio il collega &lt;a title="Blog di Osvaldo" href="http://blogs.devleap.com/osvaldoaluigi/default.aspx" target="_blank"&gt;Osvaldo&lt;/a&gt; che mi ha supportato nel determinare il comando sql da eseguire!&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/94856.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2008/12/04/94856.aspx</guid>
            <pubDate>Thu, 04 Dec 2008 05:50:57 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2008/12/04/94856.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/94856.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Aggiungere un campo non nullo e senza default ad una tabella di SQL Server</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2008/06/16/93049.aspx</link>
            <description>&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Problema&lt;/font&gt;&lt;/strong&gt;: &lt;/p&gt;
&lt;p&gt;Abbiamo una tabella in un database SQL Server, vogliamo scrivere uno script che aggiunge un campo che sia non nullo e senza default.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;font color="#00d535"&gt;&lt;strong&gt;Svolgimento&lt;/strong&gt;&lt;/font&gt;&lt;font color="#000000"&gt;: &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Il semplice script seguente...&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red0\green0\blue255;\red255\green255\blue255;\red0\green0\blue0;}??\fs22 \cf1 alter table \cf0 MappingProprieta\par ??\cf1 add\tab \cf0 SPSPropertyTitle  \tab \cf1 varchar\cf0 (255) \cf1 not null\cf0 ,  \par ??}
--&gt;
&lt;div style="background: white none repeat scroll 0% 50%; font-size: 11pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: consolas;"&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;alter table &lt;/span&gt;MiaTabella&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;add &lt;/span&gt;MioCampo &lt;span style="color: blue;"&gt;varchar&lt;/span&gt;(255) &lt;span style="color: blue;"&gt;not null&lt;/span&gt;  &lt;/p&gt;
&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;font size="2" face="Trebuchet MS"&gt;...potrebbe non funzionare se la tabella ha già dei record. Infatti Una volta aggiunta la nuova colonna, che valore avrà per i record già presenti? Non potrà essere nulla, ma non è specificato un valore di default.&lt;/font&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;font size="2" face="Trebuchet MS"&gt;Per cui dovremmo scrivere il seguente script:&lt;/font&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p style="margin: 0px;"&gt;&lt;font size="2" face="Trebuchet MS"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;alter table &lt;/span&gt;MiaTabella&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;add &lt;/span&gt;MioCampo &lt;span style="color: blue;"&gt;varchar&lt;/span&gt;(255) &lt;span style="color: blue;"&gt;not null default (&lt;font color="#800000"&gt;''&lt;/font&gt;)&lt;/span&gt;  &lt;/p&gt;
&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
&lt;p style="margin: 0px;"&gt;In questo modo i vecchi record avranno come valore la stringa vuota e quindi lo script potrà essere eseguito. &lt;/p&gt;
&lt;p style="margin: 0px;"&gt;Però a questo punto abbiamo bisogno di rimuovere il defualt.&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;La cosa non è banale: in SQL Server non potremo scrivere uno script del tipo ALTER TABLE per rimuove il default (lo potremmo fare con &lt;a href="http://technet.microsoft.com/en-us/library/ms174123.aspx" target="_blank"&gt;SQL Server Compact Edition&lt;/a&gt;). L'unico modo è quello di rimuovere il CONSTRAINT che definisce il default.&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;Ma come si chiama questo constraint? Quel nome viene creato da SQL Server e nel caso dello script sopra sarà del tipo: &lt;/p&gt;
&lt;p style="margin: 0px;"&gt;DF__MiaTabella__MioCa__6E01572D&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;La soluzione che ho trovato io fa uso di un diverso script con sui viene definito esplicitamente il nome del CONSTRAINT, dandomi quindi la possibilità di rimuoverlo in modo molto semplice:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red0\green128\blue0;\red255\green255\blue255;\red0\green0\blue255;\red0\green0\blue0;\red163\green21\blue21;}??\fs22 \cf1 /* Aggiunge il campo SPSPropertyTitle con un default temporaneo */\par ??\cf3 alter table \cf0 MappingProprieta\par ??\cf3 add\tab \cf0 SPSPropertyTitle  \tab \cf3 varchar\cf0 (255) \cf3 not null\cf0 ,  \par ??    \cf3 constraint \cf0 DF_MappingProprieta_SPSPropertyTitle \cf3 default \cf5 '' \cf3 for \cf0 SPSPropertyTitle\par ??go\par ??\par ??\par ??\cf1 /*- */\par ??/* Aggiornamento valori */\par ??/*- */\par ??\cf3 update \cf0 MappingProprieta \cf3 set \cf0 SPSPropertyTitle = SPSProperty\par ??go\par ??\par ??\par ??\cf1 /*- */\par ??/* Aggiornamento tabelle */\par ??/*- */\par ??\par ??/* Rimuove il default temporaneo */\par ??\cf3 alter table \cf0 MappingProprieta\par ??\cf3 drop constraint \cf0 DF_MappingProprieta_SPSPropertyTitle\par ??go}
--&gt;&lt;/p&gt;
&lt;div style="background: white none repeat scroll 0% 50%; font-size: 11pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: consolas;"&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: green;"&gt;/* Aggiunge il campo MioCampo ed il constraint &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: green;"&gt;&lt;span style="color: green;"&gt;(DF_MiaTabella_MioCampo) &lt;/span&gt;&lt;/span&gt;&lt;span style="color: green;"&gt;per &lt;/span&gt;&lt;span style="color: green;"&gt;il default temporaneo */&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;alter table &lt;/span&gt;MiaTabella&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;add &lt;/span&gt;MioCampo &lt;span style="color: blue;"&gt;varchar&lt;/span&gt;(255) &lt;span style="color: blue;"&gt;not null&lt;/span&gt;, &lt;/p&gt;
&lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;constraint &lt;/span&gt;DF_MiaTabella_MioCampo &lt;span style="color: blue;"&gt;default &lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;'' &lt;/span&gt;&lt;span style="color: blue;"&gt;for &lt;/span&gt;MioCampo&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;go&lt;/p&gt;
&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: green;"&gt;/* Rimuove il default temporaneo */&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;alter table &lt;/span&gt;MiaTabella&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;drop constraint &lt;/span&gt;DF_MiaTabella_MioCampo&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;go&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/93049.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2008/06/16/93049.aspx</guid>
            <pubDate>Mon, 16 Jun 2008 04:45:27 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2008/06/16/93049.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/93049.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>