Per lanciare una stored procedure su un server remoto è necessario aggiungere il server come server collegato (vedi procedura descritta in post precedente) e inoltre aggiungere l'opzione rpc = true e rpc out = true in questo modo:
EXEC master.dbo.sp_serveroption @server=N'Knauf_SIMI', @optname=N'rpc', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'Knauf_SIMI', @optname=N'rpc out', @optvalue=N'true'
GO
successivamente è sufficiente eseguire la procedura con la chiamata
EXEC [LinkedServer].Database.[dbOwner].[StoredProcedure] @param.
martedì 12 ottobre 2010
mercoledì 11 agosto 2010
Frammento di codice per il collegamento al db Sql Server
Dim connection As String = "Data Source=.\Istanza;Initial Catalog=Databas;User Id=Username;Password=Password;pooling=false;"
Dim cn As New SqlConnection(connection)
cn.Open()
Dim cm As New SqlCommand
cm.Connection = cn
Dim strSQL As String = "select * from TbContatti"
cm.CommandText = strSQL
Dim dt As New DataTable
Dim da As New SqlDataAdapter(cm)
da.Fill(dt)
Dim cn As New SqlConnection(connection)
cn.Open()
Dim cm As New SqlCommand
cm.Connection = cn
Dim strSQL As String = "select * from TbContatti"
cm.CommandText = strSQL
Dim dt As New DataTable
Dim da As New SqlDataAdapter(cm)
da.Fill(dt)
lunedì 7 giugno 2010
Trovare Righe duplicate
Per trovare righe duplicate in una tabella Sql Server utilizzare il seguente script:
SELECT IdPigmento
, UserName
FROM TbPrezziPigmenti
GROUP BY IdPigmento
,UserName
HAVING COUNT(*) > 1
SELECT IdPigmento
, UserName
FROM TbPrezziPigmenti
GROUP BY IdPigmento
,UserName
HAVING COUNT(*) > 1
martedì 1 giugno 2010
Creare Datetime da Anno e Mese
Grazie a questo script è possibile creare un parametro Datetime avendo in ingresso anno e mese passati come interi.
declare @dt datetime
declare @anno int
set @anno = 2010
declare @MM int
set @MM = 6
declare @UTC nvarchar(8)
set @UTC = ltrim(rtrim(ltrim(rtrim(str(@anno)))))
DECLARE @GG nvarchar(2)
SET @GG = '01'
IF @MM < 10
SET @UTC = @UTC + '0' + ltrim(str(@MM))
ELSE
SET @UTC = @UTC + ltrim(rtrim(str(@MM)))
SET @UTC = @UTC + @GG
set @dt = cast(@UTC as datetime)
select @dt
Meglio con questa formattazione:
CAST(CAST(@y AS varchar) + '-' + CAST(@m AS varchar) + '-' + CAST('01' AS varchar) AS DATETIME)
declare @dt datetime
declare @anno int
set @anno = 2010
declare @MM int
set @MM = 6
declare @UTC nvarchar(8)
set @UTC = ltrim(rtrim(ltrim(rtrim(str(@anno)))))
DECLARE @GG nvarchar(2)
SET @GG = '01'
IF @MM < 10
SET @UTC = @UTC + '0' + ltrim(str(@MM))
ELSE
SET @UTC = @UTC + ltrim(rtrim(str(@MM)))
SET @UTC = @UTC + @GG
set @dt = cast(@UTC as datetime)
select @dt
Meglio con questa formattazione:
CAST(CAST(@y AS varchar) + '-' + CAST(@m AS varchar) + '-' + CAST('01' AS varchar) AS DATETIME)
lunedì 17 maggio 2010
Creazione Shortcut in progetti setup
Quando vogliamo inserire un collegamento (ad esempio nella cartella Send To) dobbiamo gestire la gestione dei collegamenti, perchè per default viene creata con "Advtertised Shortcut" mentre Send To funziona solo con "Regular Shortcut".
Per fare questo una volta creato il file di setup è necessario modificarlo con Orca, e nel menù Properties inserire la chiave "DISABLEADVTSHORTCUTS=1"
Per fare questo una volta creato il file di setup è necessario modificarlo con Orca, e nel menù Properties inserire la chiave "DISABLEADVTSHORTCUTS=1"
giovedì 6 maggio 2010
Ridurre il file di Log di SQL
Per ridurre il file di log di SQL Server i .ldf, è possibile procedere attraverso il management studio cliccando con il tasto destro sul database interessato, poi Tasks, Shrink ed infine Database.
In questo modo viene visualizzata la finestra dov'è possibile ridurre il file .ldf
In questo modo viene visualizzata la finestra dov'è possibile ridurre il file .ldf
giovedì 8 aprile 2010
Uccidere i processi attivi su un database
Grazie a questo script è possibile bloccare tutti i processi attivi su un database
DECLARE @DatabaseName nvarchar(50)
SET @DatabaseName = N'NomeDatabase'
DECLARE @STR_SQL nvarchar(max)
SET @STR_SQL = ''
SELECT @STR_SQL = @STR_SQL + 'Kill ' + Convert(varchar, SPId) + ';' FROM MASTER..SysProcesses WHERE DBId = DB_ID(@DatabaseName) AND SPId <> @@SPId
EXEC(@STR_SQL)
DECLARE @DatabaseName nvarchar(50)
SET @DatabaseName = N'NomeDatabase'
DECLARE @STR_SQL nvarchar(max)
SET @STR_SQL = ''
SELECT @STR_SQL = @STR_SQL + 'Kill ' + Convert(varchar, SPId) + ';' FROM MASTER..SysProcesses WHERE DBId = DB_ID(@DatabaseName) AND SPId <> @@SPId
EXEC(@STR_SQL)
martedì 30 marzo 2010
Shortcut utili
Nel pacchetto di programmi Visual studio e SQL server è utile conoscere delle scorciatoie per velocizzare le operazioni.
Oggi grazie al buon Toby ho imparato questi:
CTRL + K + D Per Formattare tutto il file
CTRL + K + F Per formattare solo la parte selezionata
CTRL + K + C Per commentare
CTRL + K + D Per decommentare
Oggi grazie al buon Toby ho imparato questi:
CTRL + K + D Per Formattare tutto il file
CTRL + K + F Per formattare solo la parte selezionata
CTRL + K + C Per commentare
CTRL + K + D Per decommentare
lunedì 15 marzo 2010
Abilitare l'Update in oggetti SQL
Per permettere l'Update in oggetti già creati Sql Server è sufficiente impostare le opzioni come da immagine
lunedì 22 febbraio 2010
Cast di un DateTime alla mezzanotte
Per castare un datetime alla mezzanotte, in modo da poter fare confronti tra date è sufficiente la seguente funzione:
CAST(FLOOR(CAST(Data AS FLOAT))AS DATETIME)
CAST(FLOOR(CAST(Data AS FLOAT))AS DATETIME)
lunedì 25 gennaio 2010
Eseguire trasformazioni XSLT utilizzando un MemoryStream
Procedura per utilizzare le trasformazioni XSLT senza dover ogni volta salvare il file ottenuto e quello in input per la trasformazione... Per fare ciò è possibile utilizzare le memory stream come descritto:
Dim ds As New DataSet
ds.Tables.Add(dt)
Dim reader As New XmlTextReader(ds.GetXml(), XmlNodeType.Document, Nothing)
' Leggo il file XSLT
Dim xslfile As String = IO.Path.Combine(Request.PhysicalApplicationPath, "xslt\Trasformazione.xslt")
Dim x As New Xsl.XsltSettings
x.EnableScript = True
x.EnableDocumentFunction = True
Dim tra As New Xsl.XslCompiledTransform
tra.Load(xslfile, x, Nothing)
' Trasformo la DataTable XMLizzata in HTML
Dim ms As New MemoryStream
Dim myWriter As New XmlTextWriter(ms, Nothing)
Dim myXPathDoc As New XPath.XPathDocument(reader)
tra.Transform(myXPathDoc, Nothing, myWriter)
Utility.ConvertToString(ms)
alla fine è possibile utilizzare una funzione che converte la memorystream in una stringa.
Dim ds As New DataSet
ds.Tables.Add(dt)
Dim reader As New XmlTextReader(ds.GetXml(), XmlNodeType.Document, Nothing)
' Leggo il file XSLT
Dim xslfile As String = IO.Path.Combine(Request.PhysicalApplicationPath, "xslt\Trasformazione.xslt")
Dim x As New Xsl.XsltSettings
x.EnableScript = True
x.EnableDocumentFunction = True
Dim tra As New Xsl.XslCompiledTransform
tra.Load(xslfile, x, Nothing)
' Trasformo la DataTable XMLizzata in HTML
Dim ms As New MemoryStream
Dim myWriter As New XmlTextWriter(ms, Nothing)
Dim myXPathDoc As New XPath.XPathDocument(reader)
tra.Transform(myXPathDoc, Nothing, myWriter)
Utility.ConvertToString(ms)
alla fine è possibile utilizzare una funzione che converte la memorystream in una stringa.
venerdì 22 gennaio 2010
Creare Server collegato con Sql Server 2008
Per collegare un server con Sql Server 2008 è sufficiente utilizzare la seguente procedura:
EXEC master.dbo.sp_addlinkedserver
@server = N'ServerName',
@srvproduct='',
@provider=N'SQLNCLI',
@datasrc=N'IndirizzoIp\Istanza', -- se Istanza definita, altrimenti basta l'IndirizzoIp
@catalog=N'DatabaseName'
Per modificare l'username di default per collegarsi a tale server la procedura da lanciare è questa:
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname = N'ServerName',
@useself = 'FALSE',
@locallogin = NULL,
@rmtuser = 'Username',
@rmtpassword = 'Password'
EXEC master.dbo.sp_addlinkedserver
@server = N'ServerName',
@srvproduct='',
@provider=N'SQLNCLI',
@datasrc=N'IndirizzoIp\Istanza', -- se Istanza definita, altrimenti basta l'IndirizzoIp
@catalog=N'DatabaseName'
Per modificare l'username di default per collegarsi a tale server la procedura da lanciare è questa:
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname = N'ServerName',
@useself = 'FALSE',
@locallogin = NULL,
@rmtuser = 'Username',
@rmtpassword = 'Password'
venerdì 8 gennaio 2010
Attività di pulitura di un DataBase
Ecco un comodo script per pulire un database:
USE [NomeDatabase]
--
-- Attività Controlla integrità database
--
DBCC CHECKDB WITH NO_INFOMSGS
GO
--
-- Attività Elimina contenuto cronologia
--
declare @dt datetime select @dt = CAST(FLOOR(CAST(getdate() AS FLOAT))AS DATETIME)
exec msdb.dbo.sp_delete_backuphistory @dt
GO
declare @dt datetime select @dt = CAST(FLOOR(CAST(getdate() AS FLOAT))AS DATETIME)
EXEC msdb.dbo.sp_purge_jobhistory @oldest_date=@dt
GO
declare @dt datetime select @dt = CAST(FLOOR(CAST(getdate() AS FLOAT))AS DATETIME)
EXECUTE msdb..sp_maintplan_delete_log null,null,@dt
--
-- Attività Ricostruisci indice
--
USE NomeDatabase
DECLARE @tabella varchar(255)
DECLARE cursore_tabella CURSOR FOR
SELECT table_name FROM information_schema.tables
WHERE table_type = 'base table'
OPEN cursore_tabella
FETCH NEXT FROM cursore_tabella INTO @tabella
WHILE @@FETCH_STATUS = 0
BEGIN
DBCC DBREINDEX(@tabella,' ',90)
FETCH NEXT FROM cursore_tabella INTO @tabella
END
CLOSE cursore_tabella
DEALLOCATE cursore_tabella
--
-- Attività Compatta database
--
DBCC SHRINKDATABASE(N'NomeDatabase', 10, TRUNCATEONLY)
GO
USE [NomeDatabase]
--
-- Attività Controlla integrità database
--
DBCC CHECKDB WITH NO_INFOMSGS
GO
--
-- Attività Elimina contenuto cronologia
--
declare @dt datetime select @dt = CAST(FLOOR(CAST(getdate() AS FLOAT))AS DATETIME)
exec msdb.dbo.sp_delete_backuphistory @dt
GO
declare @dt datetime select @dt = CAST(FLOOR(CAST(getdate() AS FLOAT))AS DATETIME)
EXEC msdb.dbo.sp_purge_jobhistory @oldest_date=@dt
GO
declare @dt datetime select @dt = CAST(FLOOR(CAST(getdate() AS FLOAT))AS DATETIME)
EXECUTE msdb..sp_maintplan_delete_log null,null,@dt
--
-- Attività Ricostruisci indice
--
USE NomeDatabase
DECLARE @tabella varchar(255)
DECLARE cursore_tabella CURSOR FOR
SELECT table_name FROM information_schema.tables
WHERE table_type = 'base table'
OPEN cursore_tabella
FETCH NEXT FROM cursore_tabella INTO @tabella
WHILE @@FETCH_STATUS = 0
BEGIN
DBCC DBREINDEX(@tabella,' ',90)
FETCH NEXT FROM cursore_tabella INTO @tabella
END
CLOSE cursore_tabella
DEALLOCATE cursore_tabella
--
-- Attività Compatta database
--
DBCC SHRINKDATABASE(N'NomeDatabase', 10, TRUNCATEONLY)
GO
Iscriviti a:
Post (Atom)