标签: sql-server

截断简单恢复数据库的事务日志

我们有几个处于简单恢复模式的数据库。当每周重建作业运行时,tlog 驱动器每次都会变满。我如何控制每次增长的 tlog 大小?因为这些都是简单的恢复 - 我应该以 512mb 而不是 10% 的块来调整 tlog 自动增长的大小。那会有帮助吗?

sql-server backup transaction-log

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

迁移 SQL Server 数据库

我们有一些 SQL Server 数据库。可能不相关,但仅供参考:

  • 操作系统:Windows Web Server 2008 R2
  • RDBMS:SQL Server 2012 Express

我的问题是:使用 SQL Server Management Studio 备份数据库时,是否.bak需要生成的文件才能在另一台计算机上完全还原数据库?

我多年来一直在开发环境中这样做,所以我认为答案是肯定的,但我们正在迁移生产服务器,所以我不想冒险。是否有任何日志文件、配置文件 [?],如果从恢复中省略,可能会影响性能/完整性/[?]?

sql-server migration

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

恢复加密数据库的副本

我已经使用文件服务器遵循的方法对备份进行了加密。不幸的是,我没有保留加密过程的证书副本,不幸的是服务器也被完全破坏,无法再次运行,我必须恢复数据库的副本。我有一份规则的副本,但它是加密的。这个问题有解决方案吗?

sql-server restore sql-server-2014

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

AlwaysOn 上的事务复制

在我们的 AlwayOn 环境中,我有两个 SQL 服务器 2014 Ent.edition(SERVER A 和 SERVER B)。我为 [database A ] 设置了一个事务复制,指向监听器,如果发生故障转移,它应该不会引起任何问题。经过测试,故障转移后工作正常,但是当我关闭 AOAG 中的一台服务器时,在测试环境中,复制停止工作。复制监视器上没有错误。出于测试目的,我在数据库中插入了几条记录,它在 AOAG 上运行良好,但在订阅服务器上,直到我启动另一台服务器时,才会复制数据修改。一旦服务器启动,复制就开始工作。我很确定,我可能会遗漏一些东西,这不可能是设计使然。

任何想法/建议?

这是我在 AOAG 上复制的内容。

  • 分发服务器 A(包含分发数据库)- SQLSERVER
    1. 这是在远程服务器上。
  • 两个订阅者 - Sv1 和 sv2 - SQLSERVER 2008R2 标准
  • Pbulishers(服务器 A 和 B - 来自 AOAG) - SQLSERVER 2014

replication sql-server availability-groups

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

具有 MAX 条件的 SQL Sum

我有两个名为 Claim 的表

EmployeeClaimId
      1144
      3481
      3452
      5760
      7296
Run Code Online (Sandbox Code Playgroud)

和索赔状态

EmployeeClaimId   Amount   Version
       7            0.00      1
       7          300.00      3
       7          150.00      3
       7          400.00      1
       7          300.00      7
      14         1860.00      1
      14          541.00      7
      14          530.00      1
      14         2490.00      1
Run Code Online (Sandbox Code Playgroud)

我想要第二个表中的金额总和,其中每个 claimid 的版本都是最大值。

有人可以帮忙吗?

sql-server

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

即使源列和目标列都是 unicode,ssis 也无法在 unicode 和非 unicode 数据类型之间进行转换

我遇到了一个错误:“SSIS 无法在 unicode 和非 unicode 字符串数据类型之间转换”,即使源列和目标列都是 unicode (NVARCHAR) 数据类型。源数据库和目标数据库在同一台服务器上。

来源是一个查询:

SELECT 
   CASE
        WHEN [Gender__c] = 'Female' THEN 'N' 
        WHEN [Gender__c] = 'Male' THEN 'M'
        WHEN [Gender__c] = 'Nainen' THEN 'N' 
        WHEN [Gender__c] = 'Mies' THEN 'M'
        When [Gender__c] = 'Ei tiedossa' THEN 'Ei tiedossa'
        ELSE NULL 
    END as Gender__c
  FROM [database].[table] 
Run Code Online (Sandbox Code Playgroud)

有人见过一样的吗?

sql-server ssis unicode

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

多个子查询中的复杂连接

很抱歉一直打扰你们,但 SQL 对我来说仍然是新的。我有这些表:Store_location、Product、Sizes、Sells、Available_in、Offers 和 Currency。目标是能够运行一个包含多个子查询的查询(需要WHERE子句),该查询将仅返回在所有商店位置销售的产品,而不返回其他任何内容。它还必须是可扩展的,这样如果任何商店打开或关闭,代码就不需要更改。我有这些杂谈让我开始,但我不知道从哪里开始:下面的第一个 select 语句是查询成功时需要显示的内容。SELECT Store_location.store_name,Product.product_name,Sizes.size_option, COUNT(store_location.store_id) AS store_count

JOIN Sells ON Sells.store_location_id = Store_location.store_location_id
JOIN Product ON Product.product_id = Sells.product_id


JOIN ON Available_in.product_id = Product.product_id
JOIN ON Available_in.sizes_id = Sizes.sizes_id
Run Code Online (Sandbox Code Playgroud)

我试图完成连接以显示我需要使用的表在哪里有外键约束。如果您需要任何其他信息,我可以提供。我添加了一个链接,显示所有相关表格的内容。我知道我需要在 WHERE 语句中嵌入至少一个子查询,但不确定在那里放什么。我知道有很多信息需要回顾,我理解如果没有人有时间提供帮助,但任何指导都将不胜感激。

我意识到这是一个迟到的请求,但如果有人能帮助我在这方面也使用EXISTS,我将不胜感激。

join sql-server subquery count where

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

VSS 备份会破坏日志链吗?

我们的“硬件”部门已经在我们运行 SQL Server 的其中一台服务器上启动了一些 ASR 复制。似乎他们为此使用的方法使用了 VSS,我可以在 SQL 日志中看到很多关于正在备份的数据库以及 I/O 冻结/恢复的消息。它似乎每小时都这样做。

VSS 进行的这些备份会破坏日志链,还是复制备份?有没有办法查看它们是否是副本备份?是否可以指示 VSS 使用副本备份?

任何反馈表示赞赏。

sql-server backup vss

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

防止修改 dbo 对象,同时允许修改其他模式

我有一个使用 sql server (2008r2) 数据库的供应商解决方案。我们可以在我们自己的架构中做任何我们想做的事情,但不能在没有供应商许可的情况下修改 dbo 对象。我们所做的任何定制都在我们自己的模式 (cust) 中。我们可以完全控制此服务器,并且始终允许任何开发人员拥有系统管理员权限。最近,我注意到这些规则没有得到遵守,所以我想看看我是否可以首先设置权限来阻止它。

这是我想要完成的:

表:读取/写入所有,仅更改客户模式,视图设计

Views/Sprocs/Functions:查看任何定义,仅创建或更改 cust 模式

我创建了一个新用户(dev)并应用了以下内容:

deny alter on schema::dbo to dev
grant alter on schema::custom to dev
grant view definition to dev
Run Code Online (Sandbox Code Playgroud)

这会实现我想要的,还是我错过了其他东西?

解决方案(感谢 AMtwo)

use master
go
create login dev with password = 'test', check_expiration = off, check_policy = off
grant control server to dev


use CustomerDB 
go
if not exists(select * from sys.database_principals where name = 'dev') begin
    create user dev for login dev 
    grant select, insert, …
Run Code Online (Sandbox Code Playgroud)

sql-server permissions sql-server-2008-r2

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

从分区表的分区中删除所有数据的最快方法是什么?

我有一个分区表,在现实生活中它有 8000 万行。

出于测试目的,我在这里创建并分区了这个表。

当我运行以下查询时:

select * from countries
where visit >= '20110101'
  and visit <= '20111231'
Run Code Online (Sandbox Code Playgroud)

正如您在此处和下图的查询计划中看到的那样,它使用分区消除,所以我知道我在做一些正确的事情。

在此处输入图片说明

我知道分区通常不是为了加速我的查询,它是一个管理功能,但是,它可以加速对大表的查询。

我将首先说明我不想要的东西。我不想从我的表中删除任何分区。

我想要的是?

我想以最快的方式从分区中删除所有数据:

有什么比这更快的吗? 不考虑批量删除

BEGIN TRANSACTION T1

DELETE 
FROM dbo.countries WITH (TABLOCKX)
WHERE visit >= '20110101'
  AND visit <= '20111231'

--COMMIT TRANSACTION T1
Run Code Online (Sandbox Code Playgroud)

查询计划在这里

在此处输入图片说明

sql-server delete optimization partitioning sql-server-2014

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