Questions tagged «sql-server-2008»

SQL Server 2008(主要版本10.00.xxxx)。请同时用sql-server标记。

4
缩小SQL Server 2008 R2后手动设置日志文件大小
目前正在成为某种非自愿的DBA,确实需要一些帮助。 我们在完全恢复模式下拥有40GB的数据库,未配置日志备份,并且拥有84GB的巨大日志文件。到目前为止,我要挽救这种情况的计划是在数据库上运行完整的日志备份,缩小日志文件,并发起维护计划,以每晚在数据库备份的情况下运行日志备份,以帮助使其处于受控状态。 我的问题是我不希望日志文件缩小到什么都不会花在星期一的第一个早晨不断增长。我对文件应该是什么(大约是数据库的20%)进行了粗略估计,并希望从一开始就进行设置,以确保尽可能多的连续空间。这仅仅是在数据库属性->文件下更改“初始大小”的一种情况吗?我猜想数据库是否需要脱机才能发生这种情况? 提前致谢

1
处理使用insert-exec块调用的存储过程中的异常
我有一个在insert-exec块中调用的存储过程: insert into @t exec('test') 如何处理存储过程中生成的异常并仍继续处理? 以下代码说明了该问题。我想做的是根据内部exec()调用的成功或失败返回0或-1 : alter procedure test -- or create as begin try declare @retval int; -- This code assumes that PrintMax exists already so this generates an error exec('create procedure PrintMax as begin print ''hello world'' end;') set @retval = 0; select @retval; return(@retval); end …

4
无法以单用户模式连接到SQL Server
我已经开始我SQL Server 2008 sqlcst02\inst01在Single User Mode通过附加;-m到该实例在启动参数结束SQL Server Configuration Manager。我已经停止SQL Server Agent了inst01实例。我的帐户的一员Domain Admin group,我已经用试图登录sqlcmd -S sqlcst02\inst01,并不断收到错误,该服务是Single User Mode只有一个管理员可以登录。我尝试添加;-m"sqlcmd"到启动参数来限制只是连接sqlcmd,但我得到的相同的结果。我已经尝试过以我自己的帐户登录,并以本地管理员帐户登录。我已经以本人和管理员身份启动了命令提示符,但得到的结果相同。我尝试使用ADMIN:sqlcst02\inst01in 连接SSMS。没运气。 我正在尝试重置sa密码,因为以前的管理员没有为我保留此信息。这太疯狂了。我之前在其他机器上都做到了这一点,没有任何问题。

1
SQL Server 2000到2008到2012
我们现在正在从SQL Server 2000迁移到2008。我们正在对代码,脚本进行大量更改,因为自2000年到2008年以来发生了许多更改。在进行这些更改时,我想知道的是-我现在可以做些什么使它与2012年兼容同一时间。尽量避免从2012年到2008年等向后兼容的更改。我想这样做的原因是,当我们决定从2008年到2012年迁移时,尽量减少将来(从现在到3到4年)的工作量。我能做的还是需要知道的?

1
查询优化:时间间隔
总的来说,我有两种时间间隔: presence time 和 absence time absence time 可以具有不同的类型(例如休息,缺席,特殊日子等),并且时间间隔可能重叠和/或相交。 这是不肯定的,只有间隔的合理组合,原始数据存在,例如。重叠的存在间隔没有意义,但可能存在。我现在尝试通过多种方法来确定出现的时间间隔-对我来说,最舒服的似乎是紧随其后的时间间隔。 ;with "timestamps" as ( select "id" = row_number() over ( order by "empId", "timestamp", "opening", "type" ) , "empId" , "timestamp" , "type" , "opening" from ( select "empId", "timestamp", "type", case when "types" = 'starttime' then 1 else -1 …


1
EXECUTE AS USER和EXECUTE AS LOGIN有什么区别,使第二个用户行为异常?
最近,我一直在使用EXECUTE AS LOGIN来检查某个人是否可以在我们的数据库之一中使用表函数。测试表明他可以,但他一再报告失败。 该人使用登录名“ WEB”连接到数据库,并且该数据库中的用户“ WEB”与登录名“ WEB”相关联,因此我尝试了以下脚本: -- part 1 EXECUTE AS USER = 'WEB' GO SELECT USER_NAME() AS 'user_name' ,SUSER_NAME() AS 'suser_name' ,SUSER_SNAME() AS 'suser_sname' ,SYSTEM_USER AS 'system_user' GO REVERT GO 和 -- part 2 EXECUTE AS LOGIN = 'WEB' GO SELECT USER_NAME() AS 'user_name' ,SUSER_NAME() AS 'suser_name' ,SUSER_SNAME() …

3
合并复制文章计数的硬限制?
有点背景。我们开发了一个使用合并复制的应用程序。目前,我们目前正在发布约212条文章,并且一切都很好,因为它似乎已落在256条以内。(在服务器上使用SQL Standard 2005,在订户级别上使用2005 Express。) 我们正在开发一个新版本,并从头开始构建一个新数据库,该数据库的最低系统要求为SQL 2008 R2 Standard服务器端和客户端的Express 2008 R2。对已发表文章的相同256个计数限制。(是的,我们还将支持2012年,但限制是一样的) 问题出在哪里,我们已经在哪里成功测试了新版本中超过400篇文章的发布,并且所有功能都进行了功能测试(发布创建,快照和订阅者创建以及复制本身)。是否有其他人之前超过了计数限制,这仅仅是一个建议的软限制?在发布创建或订户创建期间,我们都没有看到任何错误。 根据这篇文章:http : //msdn.microsoft.com/zh-cn/library/ms143432%28v=sql.105%29 我正在等待Microsoft的回电,但我想知道是否有人以前在任何SQL版本中都看到过此消息。

1
如何创建触发器,以在修改行时更新日期字段和时间字段?
我testtable在数据库内部创建了一个testbase具有以下结构的表: product_no (int, not null) product_name (varchar(30), not null) price (money, null) expire_date (date, null) expire_time (time(7), null) 但是,我该如何编写触发器以使其将更新已修改(或用新信息更新)的特定行,并将修改日期记录到expire_date字段中,并将修改时间记录到expire_time字段中?(或者这是否可行?)


4
检查2个表(在不同服务器上)是否具有相同的准确数据
因此,托管我们的SQL Server的公司似乎在从生产服务器到备份服务器的复制中遇到了一些麻烦……我相信某些表已被正确地复制了。复制每天进行一次(数小时后)。 有什么方法可以比较两个相同的表,一个是备份中的表,另一个是生产服务器中的表,以查看昨晚复制是否有效? 我能找到的唯一方法是在两台服务器上运行以下查询,并查看结果是否与哪个“可能”匹配意味着2个表包含相同的信息。 SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*)) FROM ( SELECT * FROM table_to_compare ) t1 使用上面的代码,似乎表已成功复制,因为校验和值相同,但是我不确定此方法的可靠性。 有谁知道更好的方法来检查这一点,或者这是否是一个好方法? 我在Windows Server 2008计算机上运行SQL Server 2008。 谢谢。

2
索引会消耗内存吗?
我刚刚开始了解SQL Server上的内存使用情况。在问题SQL Server 2008 R2“ Ghost Memory”问题的答案中使用查询时?,我发现单个数据库占用了缓冲池中绝大部分的空间。再看一下,使用sys.allocation_units和sys.indexes,我确认这很可能是由于数据库中索引的大量使用引起的。大多数索引都是群集的。 另一位数据库开发人员认为我们在服务器上遇到内存问题-由于没有可用的内存,查询开始运行很长时间。 我的问题是-使用这些索引及其在缓冲池中的存在是否会占用其他进程可用的内存?

5
T SQL表值函数,以逗号分隔列
我在Microsoft SQL Server 2008中编写了一个表值函数,以数据库中的逗号分隔列为每个值吐出单独的行。 例如:“一,二,三,四”将返回一个只有一个包含以下值的列的新表: one two three four 你们这些代码看起来容易出错吗?当我用 SELECT * FROM utvf_Split('one,two,three,four',',') 它永远运行,永不返回任何东西。尤其是因为MSSQL服务器上没有内置的拆分功能(为什么为什么为什么?!),而我在网络上发现的所有类似功能都是绝对的垃圾,或者与我要执行的操作无关。 这是函数: USE *myDBname* GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER FUNCTION [dbo].[utvf_SPlit] (@String VARCHAR(MAX), @delimiter CHAR) RETURNS @SplitValues TABLE ( Asset_ID VARCHAR(MAX) NOT NULL ) AS BEGIN DECLARE @FoundIndex INT DECLARE @ReturnValue …

3
TSQL性能-最小和最大之间的值JOIN
我有两个表存储在其中: IP范围-国家/地区查询表 来自不同IP的请求列表 IP存储为,bigint以提高查找性能。 这是表结构: create table [dbo].[ip2country]( [begin_ip] [varchar](15) NOT NULL, [end_ip] [varchar](15) NOT NULL, [begin_num] [bigint] NOT NULL, [end_num] [bigint] NOT NULL, [IDCountry] [int] NULL, constraint [PK_ip2country] PRIMARY KEY CLUSTERED ( [begin_num] ASC, [end_num] ASC ) ) create table Request( Id int identity primary key, [Date] datetime, IP …


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.