---
title: "Pasar un script de SQL Server a otra versión"
description: "Convierte un script de SSMS de SQL Server 2017 o posterior en uno que carga en SQL Server 2017 a 2025, con las mismas tablas, claves y datos, y un informe de cambios."
canonical: https://intosql.com/es/sql-server-a-sql-server
last_updated: 2026-10-15
---

# Pasar un script de SQL Server a otra versión

Suelta el script que escribe Generate Scripts de SSMS con esquema y datos, como .sql o .sql.gz, en UTF-16 o UTF-8, y descarga uno que carga en SQL Server 2017 a 2025, sin importar qué versión lo escribió. Las identidades, collations y tipos como xml y hierarchyid quedan igual, y cada cambio aparece en el informe.

[Guía de migración de SQL Server a SQL Server](https://intosql.com/docs/migrations/sql-server-to-sql-server)

[Tipos de datos de SQL Server a SQL Server](https://intosql.com/docs/types/sql-server-to-sql-server)

## Qué cambia entre el archivo y el script

Cada fila es una regla que aplica el convertidor, con la línea que escribe en el informe cuando la regla cambia algo en tus datos.

| En el archivo | En el script | Línea del informe |
| --- | --- | --- |
| bit | bit |  |
| char(n), varchar(n), nchar(n), nvarchar(n), varchar(max), text, ntext | nchar(n), nvarchar(n) y nvarchar(max), con la intercalación de cada columna |  |
| column collations | la misma intercalación en cada columna |  |
| decimal(p,s), money, smallmoney | decimal(p,s); money como decimal(19,4) |  |
| datetime, datetime2, smalldatetime | datetime2(p) |  |
| datetimeoffset | datetimeoffset, con el desfase de cada valor |  |
| time | time(p) |  |
| dates that aren't valid | NULL | `date_out_of_range` |
| json (SQL Server 2025) | nvarchar(max) |  |
| uniqueidentifier | uniqueidentifier |  |
| binary, varbinary, image | binary(n), varbinary(n) y varbinary(max) |  |
| xml, sql_variant, hierarchyid, geometry, geography | los mismos tipos |  |
| rowversion, timestamp | binary(8), sin valores | `rowversion_empty` |
| IDENTITY | IDENTITY, siguiendo después del id más alto |  |
| CREATE SEQUENCE | CREATE SEQUENCE con las mismas opciones |  |
| computed columns | las mismas columnas calculadas, PERSISTED como en el origen |  |
| computed columns with functions IntoSQL doesn't write | una columna simple | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write, and NEXT VALUE FOR | sin valor predeterminado | `default_not_translated` |
| CHECK constraints | traducidos |  |
| CHECK constraints with functions IntoSQL doesn't write | no se crea | `check_skipped` |
| CHECK constraints added WITH NOCHECK or disabled | no se crea | `check_not_enforced` |
| filtered and columnstore indexes | no se crea | `index_skipped` |
| foreign keys | después de los datos, WITH NOCHECK, luego comprobada con una advertencia si hay huérfanas |  |
| ON DELETE or ON UPDATE that cascades in a cycle or along a second path | NO ACTION | `foreign_key_action_dropped` |
| foreign keys to tables the dump doesn't create | no se crea | `foreign_key_skipped` |
| tables on a partition scheme | una tabla con las filas de todas las particiones | `partitions_dropped` |
| temporal tables (SYSTEM_VERSIONING) | dos tablas: las filas actuales y el historial | `system_versioning_dropped` |
| NOT NULL columns with values that become NULL | sin NOT NULL | `not_null_relaxed` |
| views, functions, procedures, triggers, synonyms, types and partition functions | listados en el informe | `not_converted_objects` |
| scripts without CREATE TABLE (data only) | tipos leídos de los valores | `no_schema` |
| expressions in INSERT values | NULL | `expression_value` |
| types IntoSQL doesn't know | nvarchar(max) | `unknown_type` |
| NUL characters in text | se conserva |  |
| text that isn't valid in its encoding | los bytes incorrectos como carácter de reemplazo | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | se copia tal cual | `mojibake_suspected` |

## Carga el script en SQL Server

El script crea las tablas, copia las filas y luego agrega claves, índices y claves foráneas, así que carga rápido y se detiene en el primer error.

```shell
sqlcmd -b -f 65001 -S localhost -d mydb -i sql_server.sql_server.sql
```

Las claves foráneas se agregan WITH NOCHECK y luego se comprueban. Si una fila apunta a una fila que no existe, el script dice qué restricción es y la deja sin comprobar, en lugar de fallar a medias.

Para un volcado grande, ejecuta sqlcmd en la misma máquina que el servidor. Cada lote de hasta 1000 filas se confirma por separado, así que el registro de transacciones se mantiene pequeño.

## Haz el volcado de SQL Server para el mejor resultado

El convertidor lee lo que contiene el volcado. Estas opciones conservan más de tus datos en él:

- En SSMS, haz clic derecho en la base de datos, Tasks, Generate Scripts, y elige las tablas. dbatools, mssql-scripter y otras herramientas basadas en la misma biblioteca escriben el mismo script.
- En Advanced, cambia Types of data to script a Schema and data. Un script solo del esquema tiene tablas sin filas.
- Guárdalo como Unicode, el formato predeterminado de SSMS, o como UTF-8: ambos se leen igual, y gzip también funciona.

## Qué no se convierte

Las vistas, disparadores, procedimientos, funciones y otros objetos escritos en el propio lenguaje de SQL Server aparecen en el informe por nombre, nunca se descartan en silencio, para que revises cada uno contra la versión de SQL Server en la que cargas antes de recrearlo.

## Preguntas sobre pasar SQL Server entre versiones

### ¿Se sube mi volcado?

No. El convertidor se ejecuta en tu navegador y lee el volcado de tu disco por partes, así que nunca sale de tu computadora. La app de escritorio y la línea de comandos también convierten en tu computadora.

### ¿Qué tan grande puede ser el volcado?

El convertidor nunca tiene todo el volcado en memoria: lee el archivo dos veces, por rangos, y escribe el script sobre la marcha. Los volcados de varios gigabytes se convierten en el navegador, en la app de escritorio y con la línea de comandos.

### ¿Lee el archivo UTF-16 que guarda SSMS?

Sí. SSMS guarda los scripts en UTF-16 por defecto, y el convertidor lee UTF-16 y UTF-8 por igual, con gzip o sin él, con GO entre lotes.

### ¿De qué versiones de SQL Server puede venir el script?

Scripts que SSMS, dbatools o mssql-scripter escriben desde SQL Server 2017 en adelante. Cada script de prueba viene de SQL Server 2017, 2022 y 2025 y se compara con su origen celda por celda.

### ¿Se conservan los valores IDENTITY?

Sí. Las columnas IDENTITY se cargan con IDENTITY_INSERT, cada fila conserva su id y el contador sigue después del más alto. Las secuencias se crean con las mismas opciones.

### ¿Qué pasa con money, datetimeoffset y otros tipos de SQL Server?

Se quedan tal cual, incluidos xml, sql_variant, hierarchyid, geometry y geography, y cada columna de texto conserva su intercalación. Los valores datetimeoffset conservan sus desfases. Las columnas rowversion son binary(8), porque el script no tiene valores para ellas.

### ¿Qué pasa con los procedimientos, los disparadores y las vistas?

Aparecen en el informe por nombre y no se convierten, para que puedas ejecutar su parte del script original una vez que las tablas estén cargadas.

### ¿En qué versiones de SQL Server carga el script?

SQL Server 2017 a 2025, sea cual sea la versión que escribió el script. El mismo script carga en cada una, y se detiene en el primer error si algo sale mal.

## Desde SQL Server

- [SQL Server a PostgreSQL](https://intosql.com/es/sql-server-a-postgresql)
- [SQL Server a MySQL](https://intosql.com/es/sql-server-a-mysql)
- [SQL Server a MariaDB](https://intosql.com/es/sql-server-a-mariadb)
- [SQL Server a SQLite](https://intosql.com/es/sql-server-a-sqlite)
- [SQL Server a Oracle](https://intosql.com/es/sql-server-a-oracle)

## Hacia SQL Server

- [MySQL a SQL Server](https://intosql.com/es/mysql-a-sql-server)
- [MariaDB a SQL Server](https://intosql.com/es/mariadb-a-sql-server)
- [PostgreSQL a SQL Server](https://intosql.com/es/postgresql-a-sql-server)
- [SQLite a SQL Server](https://intosql.com/es/sqlite-a-sql-server)
- [Oracle a SQL Server](https://intosql.com/es/oracle-a-sql-server)

## Guía y todos los pares

- [Guía de migración de SQL Server a SQL Server](https://intosql.com/docs/migrations/sql-server-to-sql-server)
- [Tipos de datos de SQL Server a SQL Server](https://intosql.com/docs/types/sql-server-to-sql-server)
- [Todos los pares de bases de datos](https://intosql.com/es/migracion-de-bases-de-datos)
