更新:我继续使用相同的错误,但是,通过注释,我已经取得了一些进展:-最初,全文搜索功能不在我的安装中。我安装了https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-setup-full-text-search?view=sql-server-linux-2017 -我检查了https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-release-notes?view=sql-server-linux-2017#Unsupported中不受支持的元素。Linux中的全文搜索缺少一些过滤器(待定:我有一条线索要调查:原始数据库在cp1252字符集中。似乎(未证实)全文搜索对UTF-8更有效)
原题:
我正在尝试将Windows SQL Server数据库从Windows 10移动到Linux。
为此,我按照下面的说明
linux数据库是新安装在Ubuntu16.04.4LTS中的。
Windows数据库备份是以前存在的(我没有执行备份,但它是一个完整的备份)
当我尝试还原时,它会在目录数据库中生成一个错误(访问被拒绝),如图所示(为了隐私起见,数据库名改为“mydb”):
sqlcmd -S localhost -U SA -Q "RESTORE DATABASE mydb
FROM DISK = '/var/opt/mssql/backup/mydb_backup_201804300000.bak'
WITH MOVE 'mydb' TO '/var/opt/mssql/data/mydb.mdf',
MOVE 'mydb_log' TO '/var/opt/mssql/data/mydb_log.ldf',
MOVE 'sysft_appuser_catalog3' TO '/var/opt/mssql/data/catalog.ft'"
Msg 7610, Level 16, State 1, Server irulan, Line 1
Acceso denegado a '/var/opt/mssql/data/catalog.ft' o la ruta de acceso no es válida.
Msg 3156, Level 16, State 50, Server irulan, Line 1
El archivo 'sysft_appuser_catalog3' no se puede restaurar en '/var/opt/mssql/data/catalog.ft'. Utilice WITH MOVE para identificar una ubicación válida para el archivo.其他2个文件(mdf和ldf是在同一个文件夹中创建的,没有问题)。我尝试使用不同的文件名,创建以前(触摸)的文件等等,但没有成功。
这是FILELISTONLY的输出(检查备份的内容)。
LogicalName PhysicalName Type FileGroupName Size MaxSize FileId CreateLSN DropLSN UniqueId ReadOnlyLSN ReadWriteLSN BackupSizeInBytes SourceBlockSize FileGroupId LogGroupGUID DifferentialBaseLSN DifferentialBaseGUID IsReadOnly IsPresent TDEThumbprint SnapshotUrl
-------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---- -------------------------------------------------------------------------------------------------------------------------------- -------------------- -------------------- -------------------- --------------------------- --------------------------- ------------------------------------ --------------------------- --------------------------- -------------------- --------------- ----------- ------------------------------------ --------------------------- ------------------------------------ ---------- --------- ------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
mydb D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\mydb.mdf D PRIMARY 3460300800 35184372080640 1 0 0 D64B0490-3FF6-4EFE-A9A1-491B5993F3AF 0 0 2348613632 512 1 NULL 30094000017824000037 B7E468AB-78C2-4732-8D73-2F07E3ABAF9D 0 1 NULL NULL
mydb_log D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\mydb_log.ldf L NULL 1540227072 2199023255552 2 0 0 A6B8CF28-C3D8-4B50-B030-4D5B14F82084 0 0 0 512 0 NULL 0 00000000-0000-0000-0000-000000000000 0 1 NULL NULL
sysft_appuser_catalog3 D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTData\appuser_catalog3 F PRIMARY 931744 0 65539 17974000000690900001 0 0B0AEAB0-86A2-42ED-9B37-E70EE556383C 0 0 983040 512 1 NULL 30094000017824000037 B7E468AB-78C2-4732-8D73-2F07E3ABAF9D 0 1 NULL NULL
(3 rows affected)另外,我在堆栈中发现了另一篇有类似问题的帖子,但它并没有说出他/她使用的最终名称。
发布于 2018-07-16 16:13:38
在通过Linux Os恢复数据库之前,您应该确保您的服务器安装是否具有所有所需的特性,比如运行DB的上一台服务器。也可以是一个很好的实践,检查Linux上的软件限制,如FileTables、FileStream、合并复制等等。
但是,正如我前面所说的,您的SQL安装可能需要任何独立的安装,请记住,Linux上的Server使用单独的安装程序来实现一些特性,如全文搜索、SQL代理和其他特性。
如果某些版本功能限制不影响您的恢复,请在这里阅读。https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-release-notes?view=sql-server-linux-2017#Unsupported
https://dba.stackexchange.com/questions/212102
复制相似问题