有没有办法将 SQL Server 2012 数据库备份还原到 SQL Server 2008?
我试图附加文件,它不起作用。
在过去的日子里,这被认为是一个很大的禁忌select * from table或select count(*) from table因为性能受到影响。
在 SQL Server 的更高版本中是否仍然如此(我使用的是 2012,但我想这个问题适用于 2008 - 2014)?
编辑:由于人们似乎在这里稍微批评我,我是从基准/学术的角度来看这个的,而不是这是否是“正确”的事情(当然不是)
下面是一个简单的例子,它返回奇怪的结果,这是不可预测的,我们无法在我们的团队中解释。我们做错了什么还是 SQL Server 错误?
经过一番调查,我们将搜索区域缩小到子查询中的 union 子句,从“men”表中选择一条记录
它在 SQL Server 2000 中按预期工作(返回 12 行),但在 2008 和 2012 年它只返回一行。
create table dual (dummy int)
insert into dual values (0)
create table men (
man_id int,
wife_id int )
-- there are 12 men, 6 married
insert into men values (1, 1)
insert into men values (2, 2)
insert into men values (3, null)
insert into men values (4, null)
insert into men values (5, null)
insert into men values …Run Code Online (Sandbox Code Playgroud) SELECT CAST (
REPLACE (
REPLACE (
XEventData.XEvent.value ('(data/value)[1]', 'varchar(max)'),
'<victim-list>', '<deadlock><victim-list>'),
'<process-list>', '</victim-list><process-list>')
AS XML) AS DeadlockGraph
FROM (SELECT CAST (target_data AS XML) AS TargetData
FROM sys.dm_xe_session_targets st
JOIN sys.dm_xe_sessions s ON s.address = st.event_session_address
WHERE [name] = 'system_health') AS Data
CROSS APPLY TargetData.nodes ('//RingBufferTarget/event') AS XEventData (XEvent)
WHERE XEventData.XEvent.value('@name', 'varchar(4000)') = 'xml_deadlock_report';
Run Code Online (Sandbox Code Playgroud)
在我的机器上完成大约需要 20 分钟。报告的统计数据是
Table 'Worktable'. Scan count 0, logical reads 68121, physical reads 0, read-ahead reads 0,
lob logical reads 25674576, lob …Run Code Online (Sandbox Code Playgroud) xml sql-server execution-plan database-internals sql-server-2012
我正在使用 Microsoft SQL Server 2012 并尝试在 Management Studio 中针对它运行一个简单的查询。我收到以下错误(在 SSMS 中,在服务器上运行):
执行批处理时发生错误。错误消息是:抛出了“System.OutOfMemoryException”类型的异常。
系统安装了 24GB 的 RAM,但在任务管理器中查看 sqlservr.exe 进程仅使用 2.9GB。
某处是否有限制其 RAM 使用的设置?
在他对哪个更好的回答中:标识列还是生成的唯一 id 值?mrdenny 说:
当 SQL Denali 出现时,它将支持比身份更高效的序列,但您无法自己创建更高效的东西。
我不确定。知道 Oracle 的序列后,我要么为插入创建触发器,将每个插入封装到存储过程的调用中,要么祈祷我在执行临时插入时不要忘记正确使用序列。
我怀疑序列的优势是否如此明显。
将 SQL Server 和 Management Studio 从 2008 升级到 2012 后,Management Studio 2012 在打开新查询窗口和对话框时非常慢。
即使右键单击表格也很慢。在我开始在窗口内做任何事情之前,通常至少有 5 秒的延迟。每次都会发生这种情况,即使我连续两次打开同一个窗口。为什么会发生这种情况,我该如何解决?
其他应用程序非常快速地建立与数据库的连接。
我尝试过但没有帮助的事情:
hosts文件我的电脑应该足够快了,而且我还有 16GB 内存。我的硬件绝对不应该有问题。看起来 SSMS 正在等待某些东西 - 在发生这种情况时,我可以顺利运行其他程序。
我没有机会安装 SQL Server 2012 CU1 更新,因为安装修补程序似乎存在一些错误风险,我现在不能冒险。
您是否在 DEV 和 STAGING 环境中的服务器级计算机上使用 SQL Server Developer Edition?
我正在从事一个大型项目(如果它通过了概念验证阶段),我们将拥有几个运行 SQL Server 2012 企业版的大型地理分布式企业级数据库服务器。
我们的生产环境最初有 3 台服务器,我们的 Staging 环境至少有 3 台服务器,而我们的开发环境将有 1 台服务器(托管三个实例)。
我的印象是,我们只需要为实际生产服务器获取企业许可证,我们可以在我们的开发人员和临时环境中使用开发人员版本,因为它们不是“生产”。
其他消息来源告诉我,我们需要在上述所有机器上拥有企业许可证,并且开发人员版本仅适用于其工作站上的单个开发人员。
由于开发者版具有 Enterprise 的所有性感功能,我无法真正看到它在工作站级机器上的价值,尤其是对于开发和测试我们正在构建的高可用性系统类型。
如果我们必须为开发服务器分配企业许可证,那只会扼杀我们的概念验证阶段,从而扼杀项目。在暂存环境中强制使用企业许可证将使管理层只想完全跳过暂存。
一位客户报告说他们在 SQL Server 2012 上运行,我们在最终交付之前交付了一些测试查询以进行测试,但是:
“CONCAT”不是可识别的内置函数名称。
我知道这CONCAT()是 SQL Server 2012 中引入的一个新的内置函数,这一切都很好,但是我被要求回滚我的更改以使这个 2008R2 兼容,打着“执行查询的用户可能不具有要执行的 Transact-SQL 权限。” 所以我只是证明我的观点,客户端很可能在 DEV 中安装的 SQL Server 版本与在 PROD 中安装的版本不同。
我找不到任何关于专门拒绝SELECT/EXECUTE内置标量值函数的权限的信息,但是否有可能,如果是这样,用户是否仍会收到相同的错误文本?
SQL Server 2012 引入了“包含”数据库的概念,其中数据库需要的所有内容(好吧,几乎所有内容)都包含在数据库本身中。在服务器之间移动数据库时,这提供了很大的优势。那么,我想知道,这是否应该是我设计新数据库时的默认策略。
MSDN 列出了包含数据库的几个缺点,最大的缺点是缺乏对更改跟踪和复制的支持。还有其他人吗?如果我不打算使用这些功能,是否有任何理由不使用包含的数据库?