Tengo la necesidad de crear un nuevo índice para una tabla y campo, es algo bastante simple la verdad y lo estoy logrando para una base de datos.
El problema es que tengo tres servidores y cerca de 40 bases de datos por servidor, por lo cual desarrolle un script con manejo de cursor para que al correrlo ejecute la creación del índice en cada server y base de datos.
Lo que hace el script es armar una tabla temporal concatenando servidor y base de datos dentro de una variable y ejecutar el create index por cada iteración.
Este funciona:
CREATE INDEX ix_Fecha ON Compras (FechaHora)
Con el script no funciona:
CREATE INDEX ix_Fecha ON @Base (FechaHora)
El valor de @base es: nombreServer.nombreBase.dbo.nombreTabla
Logro hacerlo funcionar cuando estoy en cada servidor para las bases de datos que tiene almacenadas.
El error que me da es:
The object name 'SERVER.BASE.dbo.Tabla' contains more than the maximum number of prefixes. The maximum is 2.
En la consulta cada nombre esta dentro de corchetes [SERVER].[BASE]
Y dentro de una variable:
Cita:
SET @querySQL = 'CREATE INDEX ix_Fecha ON '+@Base+'';
EXEC sp_executesql @querySQL
EXEC sp_executesql @querySQL
Alguna idea?