我们有几个处于简单恢复模式的数据库。当每周重建作业运行时,tlog 驱动器每次都会变满。我如何控制每次增长的 tlog 大小?因为这些都是简单的恢复 - 我应该以 512mb 而不是 10% 的块来调整 tlog 自动增长的大小。那会有帮助吗?
我们有一些 SQL Server 数据库。可能不相关,但仅供参考:
我的问题是:使用 SQL Server Management Studio 备份数据库时,是否.bak需要生成的文件才能在另一台计算机上完全还原数据库?
我多年来一直在开发环境中这样做,所以我认为答案是肯定的,但我们正在迁移生产服务器,所以我不想冒险。是否有任何日志文件、配置文件 [?],如果从恢复中省略,可能会影响性能/完整性/[?]?
我已经使用文件服务器遵循的方法对备份进行了加密。不幸的是,我没有保留加密过程的证书副本,不幸的是服务器也被完全破坏,无法再次运行,我必须恢复数据库的副本。我有一份规则的副本,但它是加密的。这个问题有解决方案吗?
在我们的 AlwayOn 环境中,我有两个 SQL 服务器 2014 Ent.edition(SERVER A 和 SERVER B)。我为 [database A ] 设置了一个事务复制,指向监听器,如果发生故障转移,它应该不会引起任何问题。经过测试,故障转移后工作正常,但是当我关闭 AOAG 中的一台服务器时,在测试环境中,复制停止工作。复制监视器上没有错误。出于测试目的,我在数据库中插入了几条记录,它在 AOAG 上运行良好,但在订阅服务器上,直到我启动另一台服务器时,才会复制数据修改。一旦服务器启动,复制就开始工作。我很确定,我可能会遗漏一些东西,这不可能是设计使然。
任何想法/建议?
这是我在 AOAG 上复制的内容。
我有两个名为 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 的版本都是最大值。
有人可以帮忙吗?
我遇到了一个错误:“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 对我来说仍然是新的。我有这些表: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,我将不胜感激。
我们的“硬件”部门已经在我们运行 SQL Server 的其中一台服务器上启动了一些 ASR 复制。似乎他们为此使用的方法使用了 VSS,我可以在 SQL 日志中看到很多关于正在备份的数据库以及 I/O 冻结/恢复的消息。它似乎每小时都这样做。
VSS 进行的这些备份会破坏日志链,还是复制备份?有没有办法查看它们是否是副本备份?是否可以指示 VSS 使用副本备份?
任何反馈表示赞赏。
我有一个使用 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) 我有一个分区表,在现实生活中它有 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 ×10
backup ×2
count ×1
delete ×1
join ×1
migration ×1
optimization ×1
partitioning ×1
permissions ×1
replication ×1
restore ×1
ssis ×1
subquery ×1
unicode ×1
vss ×1
where ×1