2013-03-21 54 views
0

我正在通过IIS/Websync在SQL Server CE,3.5 SP2和SQL Server 2012之间进行合并复制。当我使用数据库身份验证与发布者连接时,一切正常。如果我切换到NT身份验证,我得到了我的剧本以下错误:SQL Server Compact合并复制与NT身份验证

初始化的SQL Server协调器失败。再试一次。

...和下​​面的错误登录IIS服务器同步日志:

命令= SYNC HR = 00004818登录失败,用户“域\用户。 18456

我试图改变这种情况的原因是因为(和纠正我,如果我错了)我不想保存在我的同步脚本(PowerShell中)的凭据。我希望如果我使用NT身份验证,它将使用此脚本在任务计划程序中运行的凭据 - 或者任何正在手动运行它的凭据。基本上,这是我的目标 - 但是它可以实现 - 不在脚本中存储信用。

+0

您正在执行此域用户是否有必要连接到数据库?你在SQL Server中看到任何失败的登录尝试吗? – JodyT 2013-03-21 18:49:39

+0

所以这很有趣。当我将'PublisherSecurityMode'设置为NTAuthentication时,sql日志显示'NT AUTHORITY \ ANONYMOUS LOGIN登录失败'。如果我没有设置,那么它说登录失败,因为我试图用Windows帐户使用SQL身份验证。 – Progger 2013-03-21 18:55:33

+0

我相信SQL Server中的合并复制有一个允许匿名访问的选项。 [检查此链接](http://msdn.microsoft.com/en-us/library/ms178668.aspx)。如果这有助于我将它添加为答案。 – JodyT 2013-03-21 19:23:18

回答

0

要使用Windows身份验证,您必须在IIS服务器上使用基本身份验证(可能使用SSL进行保护),但客户端必须支持Windows用户名和密码。然后,您可以将PublisherSecurityMode设置为NTAuthentication,然后Windows帐户将登录到数据库服务器。因此,您必须将脚本存储在脚本中,或者提示运行脚本的人员输入凭据,然后相应地设置InternetLogin和InternetPassword属性。

+0

有趣。我实际上有它的工作(见上文)没有存储在脚本中的信用,并没有被提示。我有我的信用存储在IIS中的应用程序池中。 IIS设置为匿名。唯一的缺点是任何有权访问IIS服务器的人都可以访问数据库。对我来说没什么问题,因为我使用的是内部证书,IIS被锁定为IP​​。另一个缺点是他们都使用相同的凭据。 – Progger 2013-03-25 14:38:46

+0

是的,这也是一个有效的解决方案... – ErikEJ 2013-03-25 16:44:28

0

我得到这个工作的唯一方法是当我运行向导并选择“匿名”进行Web访问时。只有那时我才提示输入将用于NT Auth(存储在Web服务器上)的凭证。这意味着所有客户端都会匿名连接,并为SQL使用相同的信誉。他们不能分别拥有自己的SQL凭据。但是,它们可以分别拥有自己的IIS凭据。