Cambiar propiedade de mesa no SQL Server

Recentemente, tivo a infeliz caso dun servidor ser vivo configuración e utilizado por só un usuario que non se DBO. Ou o programador non coñezo ningún mellor ou ... ben ... era o idiota da aldea ... de calquera forma, entón ... a co código. Aquí está unha simple declaración T-SQL que vai buscar e percorrer todos os procedementos almacenados, táboas e Exposicións e actualiza-los para usar DBO (ou calquera outro usuario quere):

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 sysobjects WHERE xtype IN ( 'U' , 'V' , 'P' ) AND uid = user_id ( 'olddbuser' ) OPEN tblcur WHILE 1 = 1 BEGIN FETCH tblcur INTO @tbl IF @@fetch_status < 0 BREAK SET @tbl = 'olddbuser.' + @tbl EXEC sp_changeobjectowner @tbl , 'dbo' END DEALLOCATE tblcur Declare @ tbl sysname Declare Cursor INSENSITIVE tblcur FOR SELECT nome FROM sysobjects xtype Where IN ('U', 'V', 'P' AND uid = user_id) ("olddbuser) tblcur OPEN mentres 1 1 = Begin FETCH into tblcur @ tbl IF @ @ fetch_status <0 SET @ break tbl '= olddbuser.' + @ tbl sp_changeobjectowner exec @ tbl, 'DBO' END tblcur DEALLOCATE 

Usando OPENROWSET para conectarse directamente a outro banco de datos sen un servidor vinculado e executar un procedemento caché

21 de abril de 2009 por AcidRaZor · Deixe un comentario
Arquivo en: Xeral PC stuff , MSMQ , Programación 101 , SQL Server
  1
 2
  SELECT *
 'SQLOLEDB' , database_location;username;password , 'set fmtonly off exec database.dbo.stored_Procedure' ) AS Whatever FROM OPENROWSET ('SQLOLEDB', database_location; username, contrasinal, "partiu exec database.dbo.stored_Procedure) como calquera cousa que FMTONLY 

O anaco de código anterior é auto-explicativo. Eu só teño usado isto en SQL Server 2005, porén, por iso, se non funciona no SQL 2000 non veña chorar a min.

Substituír database_location co IP / Destino do servidor que desexa conectarse a
Substitúe o nome de usuario / contrasinal con ... ben ... realmente teño que explicar isto?
Substitúe a base de datos co catálogo / base de datos que desexa consulta
Substituír stored_Procedure co procedemento caché que desexa realizar
O "como calquera cousa que" é necesario. Pode nomear esa cousa que desexa.

Eu usei o exposto para consulta unha base de datos directamente para a extracción de datos / manipulación. Podería ir tan lonxe como a interna unirse a este nas súas consultas normais, se non está facendo unha actualización / add loop cursor sobre o tema.

Enjoy. Levei moito tempo para descubrir iso :)

Empregando un servidor vinculado no SQL 2005 Express para conectarse ao Excel

05 de marco de 2009 por AcidRaZor · Deixe un comentario
Arquivo en: SQL Server

Estou moi errado cando se trata da falta de opcións DTS SQL 2005 Express, especialmente cando se trata de importación de follas de cálculo de Excel nunha táboa de referencia para que eu poida máis doado dentro dunha instrución T-SQL para importar datos para meu base de datos relacional existente .

Finalmente, podo atopar unha pequena xoia que parecía funcionar:

  1
 2
 3
 4
 5
 6
 7
 8
 9
 'EXCEL2' , 'Excel' , 'Microsoft.Jet.OLEDB.4.0' , 'D: \d ata.xls' , NULL , 'Excel 8.0' , NULL SELECT * FROM excel2... a $ WHERE [ Whatever COLUMN ] IS null Sp_addlinkedserver 'EXCEL2 exec "," Excel "," Microsoft.Jet.OLEDB.4.0', 'D: \ d ata.xls', NULL, "Excel 8.0", NULL SELECT * FROM excel2 ... US $ Where [¿Que Column] é nulo 

Efectivamente vostede alias o documento Excel como un servidor vinculado de SQL (neste exemplo, excel2). Só precisa facelo unha vez. Unha vez que é a configuración que funciona ata de conexión co alias do servidor (ou mover a fonte de datos)

Tanto me axudou tremendamente na obtención de datos e consulta con T-SQL, sen ter que Import-lo como eu estou acostumado co DTS. Pode querer estar no look-out para as diferenzas lingüísticas entre os dous, pero un sinxelo COLLATE DATABASE default debe facer o truco na maioría dos casos, cando join'ing interior ou comparar dous datos servidor diferente.

SEO Powered by Platinum SEO de Techblissonline