una tabla servidores registros otra insertar estructura diferentes datos copiar columna sql sql-server database indexing

servidores - copiar tabla sql



Cómo copiar índices de una tabla a otra en SQL Server (6)

¿Quieres copiar la definición del índice?

Luego puede aplicar ingeniería inversa al índice, desencadenadores, etc. mediante la opción "Script" en la herramienta de administración de Microsoft SQL

Simplemente haga clic derecho en el nombre de una tabla en la lista de tablas de SQL Management Studio y seleccione "Script Table as" y luego "Create to"

No puede copiar los datos del índice en relación con el almacenamiento físico del índice

Primero compruebe que tiene "Herramientas / Opciones / Explorador de objetos de SQL Server / Secuencias de comandos / Índices de secuencias de comandos" configurados en "Verdadero". Esto se establece en falso en alguna versión de la herramienta de administración de SQL (gracias, marca)

Necesito copiar los índices de una tabla a otra. Hay MUCHOS índices y no quiero recrearlos desde cero. Parece error propenso de todos modos.

He copiado la estructura usando

SELECT * INTO [BackupTable] FROM [OriginalTable]

Pero eso no copia índices, restricciones, desencadenadores, etc.

¿Alguien sabe como hacer esto?


Deberías tener la idea aquí

Sub CopyTemp(tblName As String, Optional WithIndex As Boolean = False) Dim db As DAO.Database Dim tDefOrig As DAO.TableDef Dim tDefNew As DAO.TableDef Dim idxOrig As DAO.Index Dim idxNew As DAO.Index Dim fld As DAO.Field Dim tempName As String tempName = "temp" & tblName Set db = CurrentDb db.Execute "Select * Into " & tempName & " From " & tblName If WithIndex = True Then Set tDefOrig = db.TableDefs(tblName) Set tDefNew = db.TableDefs(tempName) For Each idxOrig In tDefOrig.Indexes Set idxNew = tDefNew.CreateIndex(idxOrig.Name) With idxNew For Each fld In idxOrig.Fields .Fields.Append .CreateField(fld.Name) Next .Primary = idxOrig.Primary .Unique = idxOrig.Unique End With tDefNew.Indexes.Append idxNew tDefNew.Indexes.Refresh Next End If End Sub


Haga clic con el botón derecho en el índice en SSMS y haga el script como> crear.

Cambia el nombre de la tabla y el nombre del índice y deberás configurar


No estoy específicamente familiarizado con SQL Server, sin embargo, según la forma en que se definen y usan las tablas de base de datos en otras bases de datos, diría que no hay forma de hacerlo simplemente copiando los datos o utilizando un SELECT INTO.

Los índices deben definirse como parte de la estructura de la tabla y deben generarse para cualquier dato existente que pueda haber en la tabla.

La única forma de hacerlo es durante la sentencia CREATE TABLE utilizando una sentencia ALTER TABLE después de crear la tabla.

Las declaraciones para trabajar con los datos en sí están separadas de trabajar con las definiciones de la tabla, por lo que no creo que haya ninguna solución o atajo para esto.

Estoy seguro de que habría herramientas disponibles para generar la declaración ALTER TABLE para crear todos los índices apropiados basados ​​en la tabla que ya tiene, lo que lo hace fácil y confiable.


Por defecto, la tabla de clic derecho "CREAR" no incluye los índices ni los desencadenantes, solo la definición de la tabla y las restricciones.

Puede hacer clic derecho en la base de datos y hacer clic en "Tareas" -> "Generar secuencias de comandos" que le permitirán hacer esto

Editar: este es el valor predeterminado, pero como menciona TFD, se puede cambiar, por suerte.


Puede crear una secuencia de comandos utilizando la información en sysindexes (o sys.indexes, dependiendo de su versión) para recrear todos los índices, pero utilizar el método Select * para acercarse tampoco recogerá las claves primarias y externas ni ninguna propiedad extendida. . Realmente debería considerar el uso de SSIS si está usando una versión 2005+, o DTS si está usando 2000, ambos tienen asistentes para simplificar este tipo de copia.

Importación SSIS Exportación

DTS Import Export