Questions tagged «sql-server»

所有版本的Microsoft SQL Server(非MySQL)。还请添加特定于版本的标记,例如sql-server-2016,因为它通常与问题相关。

4
是否可以在sql-server中备份和还原数据库的一部分?
我们有一个sql-server 2005数据库,我们定期将其从客户端站点转移到我们的客户端站点。这需要很长时间,因为我们没有直接连接,必须通过其基于Web的文件传输应用程序传输文件。该数据库当前大约为10GB,但是我们不需要所有数据-大多数数据位于审计表和可重新生成计算值的表中。 我已经考虑过创建一个文件组来保存审核表,并希望我可以备份和还原主文件组。我可以很好地备份,但是在还原时出现错误,提示我没有将其还原到同一数据库。是否可以使用文件组将数据库的一部分还原到其他服务器?有一个更好的方法吗?

3
收缩SQL Server日志文件如何影响性能?
我有一个SQL Server 2008数据库,该数据库的数据文件大小约为2GB,但日志文件超过8GB。在2008年之前的数据库中,我可以使用“备份日志”和该TRUNCATE_ONLY选项,但是在2008年及以后的数据库中不再可用。 我确实有一个脚本会截断日志文件: USE [MyDatabase] GO ALTER DATABASE [MyDatabase] SET RECOVERY SIMPLE WITH NO_WAIT DBCC shrinkfile('MyDatabase_log', 1) ALTER DATABASE [MyDatabase] SET RECOVERY FULL WITH NO_WAIT GO 这会完全截断日志文件,但是我的问题是:这会影响性能吗? 我每天执行两次完整备份,因此就数据前滚而言,确实不需要日志。


5
SQL Server-用于报告的单独数据库?
在我们的SQL Server上,我们为每个Web应用程序都有一个数据库。对于报表,我们使用Reporting Services,所有报表数据(包括报表参数)均来自存储过程。 存储过程与报告中的数据位于同一数据库中。因此,例如,为“库存”报告提供服务的proc在“库存”数据库中。一些报告显示来自多个数据库的信息,然后proc将位于那些源数据库之一中。报表参数从企业数据库(包含商店,员工等数据)的proc中获取其数据。 这意味着所有报告至少都具有与Enterprise数据库的连接,以及与另一个数据库的另一个连接-有时甚至更多。 我的问题是:将报告过程移入单独的“报告”数据库是否有好处?我知道将报表移到另一台服务器上的好处,我不是在谈论它-这将在同一台服务器上。 可能影响此的因素是: 一个报告具有多个数据库连接是否会影响报告的速度? 将报表proc与数据保存在单独的数据库中是否会阻止我们使用索引视图? 您是否发现在单独的数据库中管理报告更容易/更困难? 请让我知道你的想法。

2
不区分大小写的排序规则如何工作?
SQL Server中的默认排序规则类型允许对不区分大小写的字符串建立索引,但数据的大小写仍然保留。这实际上如何工作?我正在寻找实际的基本要点,位和字节或详细解释它的好资源。 create table casetest (fruitnames nvarchar(50) not null); create unique index IX_fruitnames on casetest(fruitnames); insert into casetest values ('apples'); insert into casetest values ('Pears'); -- this insert fails insert into casetest values ('pears'); -- this yields 'Pears' as a result select * from casetest (forceseek) where fruitnames = 'PEARS' …


17
如何比较两个数据库的架构?
有没有办法找到两个SQL Server数据库之间的差异(仅模式)。一个是本地的,第二个是在客户的站点。我们在运行Crystal Reports时遇到一些问题,这些Crystal Reports运行某些​​报告,并且某些代码未执行,并且似乎架构不匹配。 我可以在两个数据库上运行相同的命令并比较结果以表明差异在哪里吗?


2
在SSDT中引用系统视图?
我已将一个数据库导入SSDT,其中包含对系统视图(特别是sys.columns)的引用。问题是,当我构建项目时,我随后收到有关未解析引用的警告 从我在MSDN论坛上看到的来看,这似乎是一个已知的问题:http : //social.msdn.microsoft.com/Forums/en-US/ssdsgetstarted/thread/5a7026bd-0602-42e6-a639- d73bed903c26 现在,我知道我可以关闭或忽略该警告,但是有人知道实际的解决方案吗? 谢谢



2
外键会导致死锁并阻碍“读取已提交的快照”吗?
这是来自以下方面的后续问题:https : //stackoverflow.com/questions/7684477/is-it-possible-to-set-transaction-isolation-level-snapshot-automatically 尽管同时运行大型报表时,我仍然在ASP.NET应用程序中遇到死锁/超时的情况READ_COMMITTED_SNAPSHOT ON。 所以我有两个问题: 如何检查“ 事务隔离级别快照”是否按预期运行/完全正常? 我假设外键(在Web应用程序表中的报表表中)引起死锁。我发现这篇有趣的文章: 注意 SQL Server在验证外键时会获取共享锁,即使该事务使用的是读取提交的快照(使用行版本控制读取的提交)或快照隔离级别。当使用这些事务隔离级别检查来自事务的死锁图时,请注意这一点。如果看到共享锁,请检查是否对由外键引用的对象进行了锁定。 如何检查FK是否真正引起了死锁/超时情况,这是否意味着我可以删除那些外键以防止死锁(这是可以接受的工作)? 注意:我只是从导致死锁的表中读取。 对此主题的任何想法都将不胜感激。 编辑 这是一个死锁图。也许有人可以帮助我了解造成僵局的原因。似乎是在没有任何报告仅由Web应用程序运行的情况下发生的,当两个事务要写入同一个表时(一个更新和一个插入,该插入与存储过程相同)。为什么要获取页锁?如何仅启用行锁?Insert-SP已使用TRANSACTION ISOLATION LEVEL REPEATABLE READ。 我非常怀疑两个触发器(一个更新和一个插入)是造成死锁的原因。这是插入触发器: CREATE TRIGGER [dbo].[CreateRMAFiDates] ON [dbo].[RMA] AFTER INSERT AS BEGIN SET NOCOUNT ON; UPDATE RMA SET [fiCreationDate]=(SELECT idDate FROM tdefDate WHERE CONVERT(VARCHAR, INSERTED.Creation_Date, 112) = tdefDate.Text), [fiPopDate]=(SELECT idDate FROM …


2
默认约束,值得吗?
我通常按​​照以下规则设计数据库: 除db_owner和sysadmin外,其他任何人都不能访问数据库表。 用户角色在应用程序层进行控制。我通常使用一个db角色来授予对视图,存储过程和函数的访问权限,但是在某些情况下,我添加了第二条规则来保护某些存储过程。 我使用TRIGGERS最初验证关键信息。 CREATE TRIGGER <TriggerName> ON <MyTable> [BEFORE | AFTER] INSERT AS IF EXISTS (SELECT 1 FROM inserted WHERE Field1 <> <some_initial_value> OR Field2 <> <other_initial_value>) BEGIN UPDATE MyTable SET Field1 = <some_initial_value>, Field2 = <other_initial_value> ... END DML使用存储过程执行: sp_MyTable_Insert(@Field1, @Field2, @Field3, ...); sp_MyTable_Delete(@Key1, @Key2, ...); sp_MyTable_Update(@Key1, @Key2, …


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.