小编Jez*_*Jez的帖子

确定是否在不登录的情况下启用混合模式身份验证?

在 SQL Server 中是否可以在不登录 SQL Server 的情况下确定是否启用了混合模式身份验证?

authentication security sql-server sql-server-2012 logins

12
推荐指数
2
解决办法
1551
查看次数

处理事务复制的身份范围

我注意到当您设置事务复制时,SQL Server 会将标识范围管理设置为手动。这意味着在我的订阅数据库中,当我尝试将一条新记录插入到 PK 是标识列的表中时,它会给我一个错误并说它试图插入一个“1”、“2”的 PK "、"3" 等。这是因为订阅者上所有标识列的当前标识值被重置为种子值(通常为 1),而不是保持在发布者上的值。

我理解 SQL Server 这样做的原因 - 您应该将订阅者表保留为只读。但是,我的场景有点不正统 - 我通过复制不时更新我的​​订阅者,立即备份该数据库,然后我想对订阅者进行一些不会被推回发布者的更新,然后当我再次更新订阅者时,我从较早的备份中恢复其数据库并提取最新更新。因为我想在这些更新之间对订阅者进行更新('临时增量',如果你愿意的话),我需要标识列工作,而不是在复制时重置为 1。

我在设置发布时尝试打开自动标识范围管理,但是当我尝试将表添加到发布时,这只会给我以下错误:

消息 21231,级别 16,状态 1,过程 sp_MSrepl_addarticle,第 2243 行
自动标识范围支持仅对允许更新订阅者的发布有用。

有什么办法可以解决这个问题吗?我确实想将此复制呈现给 SQL Server,就好像它在订阅者端是只读的一样,因为我不打算进行将推送回发布者的更新,但我确实想要进行临时更新将在下一次复制之前被擦除。

我还考虑过快照复制可能是比事务复制更适合我的使用模式的方法,但问题是快照复制需要每次更新都发送整个该死的数据库;因为我打算在最近一次复制后立即备份数据库,所以我不需要每次都进行整个传输;只是自上次以来的变化。

sql-server sql-server-2008-r2

9
推荐指数
1
解决办法
4381
查看次数

还原数据库时对象名称“master.dbo.MSreplication_options”无效

我试过在谷歌上搜索这个问题的答案,但一无所获。

我有一个 SQL Server 实例,其复制设置为FooDatabase. 我有第二个实例,其复制设置FooDatabase为第一个实例的订阅者。复制更新工作。我想要做的是备份订阅FooDatabase,在订阅者实例上删除它,然后恢复备份。但是,当我这样做并尝试恢复备份时,出现以下错误:

服务器“DAVEG1525-162”的还原失败。(Microsoft.SqlServer.SmoExtended)

System.Data.SqlClient.SqlError: 无效的对象名称“master.dbo.MSreplication_options”。(Microsoft.SqlServer.Smo)

我已经检查过并且dbo.MSreplication_options确实作为生产实例的master数据库中的系统表存在,但不在订阅实例上。

我的问题是:如果订阅实例上不存在它,为什么它包含在从 SQL Server 订阅实例制作的备份中?我该如何解决这个问题?

replication backup sql-server-2008-r2 restore transactional-replication

4
推荐指数
1
解决办法
4223
查看次数

显式定义列排序规则,即使它是数据库默认排序规则

如果排序规则是数据库默认值,SQL Server 似乎会不遗余力地删除COLLATE对列的限制。nvarchar我的数据库默认是SQL_Latin1_General_CP1_CI_AS. 如果我这样创建一个表:

CREATE TABLE [dbo].[UserActive](
    [Id] [uniqueidentifier] NOT NULL,
    [DateCreated] [datetimeoffset](7) NOT NULL,
    [Username] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [Password] [nvarchar](max) NULL,
    [Email] [nvarchar](254) NOT NULL,
 CONSTRAINT [PK_UserActive] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)

...然后要求 SQL Server Management Studio 将表编写为CREATE语句,我得到以下结果:

CREATE TABLE [dbo].[UserActive]( …
Run Code Online (Sandbox Code Playgroud)

sql-server collation

2
推荐指数
1
解决办法
409
查看次数

为什么 ASC 和 DESC 出现在 *CASE 子句之后?

此查询有效:

DECLARE @Ordering NVARCHAR(50)
SET @Ordering = 'aggregateid'

DECLARE @OrderDirectionInt INT
SET @OrderDirectionInt = 0 --1

SELECT * FROM (
    SELECT
        ROW_NUMBER() OVER (ORDER BY
            CASE WHEN LOWER(@Ordering) = 'aggregateid' AND @OrderDirectionInt = 1 THEN AggregateId END DESC,
            CASE WHEN LOWER(@Ordering) = 'aggregateid' AND @OrderDirectionInt = 0 THEN AggregateId END ASC
        ) AS RowNumber,
        MyField
    FROM
        MyTable
) AS TempResults
WHERE TempResults.RowNumber BETWEEN 12 AND 23
Run Code Online (Sandbox Code Playgroud)

我不明白的是,为什么ASCDESC(或外)的CASE语句。看起来ASCDESC被无条件地放入,这是没有意义的......它可能会解决:

ROW_NUMBER() …
Run Code Online (Sandbox Code Playgroud)

sql-server syntax

1
推荐指数
1
解决办法
1302
查看次数