De VMWare Browser Appliance is een leuke gratis Virtual Machine van VMWARE die ondertussen enkele weken uit is. Vanavond heb ik Flock eens geïnstalleerd in de VMWare Browser Appliance .... Works fine ...
Gisteren heeft Microsoft meer details gegeven over de nieuwe certificaten. Voor SQL Server komen er 4 nieuwe titels en maar liefst 8 nieuwe examens. Alle details vind je op de MCP site van Microsoft. Een mooie samenvatting vind bij MCP Magazine of in de Freemind mindmap hieronder.
Vanavond heb ik een leuke test gedaan. Ik heb Smoothwall (www.smoothwall.org) geïnstalleerd en geconfigureerd in Virutal PC 2004. Alles was up and running met een RED en GREEN interface ... en daarna geprobeerd om die virutal machine te openen in de nieuwe VMWare player ...
Ik ben jammergenoeg niet verder gekomen dan deze screenshot :-(
xp_execresultset is één van de leukere non-supported extended stored procedures in SQL Server.
Deze extended stored procedure roep je op met minimum 2 parameters. De eerste is een query die je wilt uitvoeren. De tweede is de naam van een database. Het leuke aan xp_execresultset is nu dat hij niet alleen de query uit de eerste parameter uitvoert maar ook nog eens elke rij uit het resultaat uitvoert op de databank die je meegaf in de tweede parameter.
Onderstaand voorbeeldje gaat een SELECT COUNT(*) uitvoeren op elke user tabel in de pubs database:
EXEC master..xp_execresultset N'SELECT ''SELECT COUNT(*) FROM '' + o.name FROM sysobjects o WHERE o.type = ''U'' ', 'pubs'
Er bestaat nog een optionele derde parameter. Als je die op 1 zet wordt het resultaat niet uitgevoerd maar enkel getoond. Handig bij het testen bijvoorbeeld.
EXEC master..xp_execresultset N'SELECT ''SELECT COUNT(*) FROM '' + o.name FROM sysobjects o WHERE o.type = ''U'' ', 'pubs', 1
Na wat denkwerk vind je wel snel een paar leuke toepassingen. Bijvoorbeeld alle tijdelijke tabellen wissen uit een database (tabellen met namen die beginnen met tmp_).
EXEC master..xp_execresultset N'SELECT ''DROP TABLE '' + o.name FROM sysobjects o WHERE o.name like ''tmp_%'' and o.type = ''U'' ', 'myDB'
Ook leuk ... op één tabel indexen droppen en opnieuw aanmaken op alle kolommen. Hier is de truuk met de duif:
EXEC master..xp_execresultset N'SELECT ''DROP INDEX '' + table_name + ''.'' + table_name + ''_idx_'' + column_name from information_schema.columns WHERE table_name = ''myFactsTable'' ' , myDWHdb
EXEC master..xp_execresultset N'SELECT ''CREATE INDEX '' + table_name + ''_idx_'' + column_name + '' ON ''+ table_name + ''('' + column_name + '')'' from information_schema.columns WHERE table_name = ''myFactsTable'' ' , myDWHdb
Dit statement genereerd voor elk object dat niet 'owned by dbo' is een sp_changeobjectowner statement.
SELECT 'EXEC(''sp_changeobjectowner @objname = '''''+ ltrim(u.name) + '.' + ltrim(s.name) + '''''' + ', @newowner = dbo'')' FROM sysobjects s, sysusers u WHERE s.uid = u.uid AND u.name <> 'dbo' AND xtype in ('V', 'P', 'U') AND u.name not like 'INFORMATION%' order by s.name
script is nu een stored proc (kan makkelijker opgeroepen worden voor alle tabellen, op basis van sysobjects bijv.)
script werkt ook met case sensitive databases
ik kreeg een fout op het SYSNAME datatype (is nu nvarchar(128))
De aangepaste code staat hieronder.
scrolling="auto" frameborder="1"> [Your user agent does not support frames or is currently configured not to display frames. However, you may visit the related document.]