SQLServer 2008 复制同步(发布、订阅)的几个问题

这里主要说说遇到的问题及其解决办法:

1、NVarCharMax数据类型的问题

错误提示:Message: 对象?XXXX 中的列?XXXX 包含类型 NVarCharMax,此类型不受目标服务器版本 SQL Server 2000 支持。

错误原因:兼容的数据库的问题,常见于最初由低等级的数据库服务器创建,后升级到高版本。

解决办法:

ALTER DATABASE 数据库名称 SET COMPATIBILITY_LEVEL = 100

2、删除发布时不能删除的问题

错误提示:无法作为数据库主体执行,因为主体 “dbo” 不存在、无法模拟这种类型的主体,或您没有所需的权限。
已将数据库上下文更改为 ‘XXXX’。

错误原因:sa用户不是数据库所有者。

解决办法:

USE? 数据库名;
EXEC sp_changedbowner 'sa';

3、订阅没有读取快照的权限

错误提示:由于出现操作系统错误 3,进程无法读取文件“xxxx.pre”。 (源: MSSQL_REPL,错误号: MSSQL_REPL20143)

错误原因:读取文件的权限问题。

解决办法:

(1)FTP方法

看这篇文章:http://www.cnblogs.com/dudu/archive/2010/08/26/1808540.html

(2)共享文件夹

首先在两台服务器中创建相同的账号和密码。

然后在备份服务器中创建一个共享文件夹,设置刚创建的账号具有读写的权限。

然后在发布属性中将快照文件的位置设置到这个文件夹:

然后在订阅属性中设置快照文件位置:

然后重新初始化订阅,等待几秒钟就可以读取快照了。

将共享文件夹设置到主服务器应该也可以,没有测试。方法就是要设置到一个所有服务器都可以访问到的地方。

原文地址:https://www.cnblogs.com/xzlive/p/12971384.html