Questions tagged «sql-server-2008»

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

2
为什么“ SELECT POWER(10.0,38.0);”会引发算术溢出错误?
我正在更新我的IDENTITY溢出检查脚本以解决DECIMAL和NUMERIC IDENTITY列。 作为检查的一部分,我计算了每一IDENTITY列的数据类型范围的大小。我用它来计算该范围已用尽的百分比。对于DECIMAL与NUMERIC 该范围的大小2 * 10^p - 2,其中p是精度。 我用DECIMALand NUMERIC IDENTITY列创建了一堆测试表,并尝试如下计算它们的范围: SELECT POWER(10.0, precision) FROM sys.columns WHERE is_identity = 1 AND type_is_decimal_or_numeric ; 这引发了以下错误: Msg 8115, Level 16, State 6, Line 1 Arithmetic overflow error converting float to data type numeric. 我将其范围缩小到IDENTITY类型的列DECIMAL(38, 0)(即,具有最大精度),因此我POWER()直接尝试对该值进行计算。 以下所有查询 SELECT POWER(10.0, 38.0); SELECT CONVERT(FLOAT, (POWER(10.0, …

1
在视图中使用OPENQUERY对性能的影响
请在stackoverflow上查看此问题: 我正在使用EasySoft ODBC驱动程序将SQL Server 2008 R2 Express实例链接到Interbase,并且在从远程服务器获取元数据时遇到了一些困难。从网上看,所有主要提示都使用OPENQUERY而不是链接服务器语法的四部分。 EG我目前(有问题的)方法是... CREATE VIEW [LIVE].[vwPRDETS] AS SELECT * FROM [LBLIVE]...[PRDETS] WITH (NOLOCK) 但是在某些表上,调用视图时出现错误... 消息7353,级别16,状态1,行1链接服务器“ LBLIVE”的OLE DB提供程序“ MSDASQL”提供了不一致的元数据。在执行期间提供了一个额外的列,该列在编译时找不到。 另外,我什至无法创建一些视图,因为我得到了以下... 消息7315,级别16,状态1,第1行链接服务器“ LBLIVE”的OLE DB访问接口“ MSDASQL”包含多个与名称“ SYSDBA.AUDID_LBABKP”匹配的表。 虽然只提到了一张表。 搜索网络的另一种方法似乎更像是... SELECT * FROM OPENQUERY(<linked sevrer>, 'SELECT <column list> FROM MyTable') 因此,我的问题是,如果我在视图定义中使用OPENQUERY,SQL Server能否优化发送到Interbase的结果SQL?还是这两种方法之间确实没有太大区别? 这是一个跨学科的话题,并且会喜欢dba的POV。

1
在单个数据库上批量插入权限
我在一家拥有直接IT安全方式的公司工作。为了优化我们团队中的某些流程,我被聘为数据库分析师。问题是我只具有读写权限,并且正在尝试获取数据库的高级权限。当前,我们在单个服务器上有很多数据库,并且只能在单个数据库上工作,我想知道是否BULK INSERT可以将权限授予单个数据库,还是对整个服务器授予权限? 我已经在网上搜索了一下,但是有些困惑。这是我发现的。为了使用BULK INSERT,我应该INSERT对所需的表或数据库具有权限,而ADMINISTER BULK OPERATIONS这是服务器范围的权限。如果我获得了ADMINISTER BULK OPERATIONS对整个数据库的INSERT许可权,并且获得了对单个数据库的许可权,那么BULK INSERT由于我没有INSERT对其他数据库的许可权,我是否只能在该单个数据库中? 是否可以将它限制为BULK INSERT在具有多个数据库的服务器上的单个数据库使用? 抱歉,文字墙,谢谢!

5
主文件组已满SQL Server 2008
我有一个大表(约5000万行),我正在尝试将其批量插入SQL Server,但出现错误: 无法为数据库“ I 3 Stroke”中的对象“ myDB”分配空间,因为“ PRIMARY”文件组已满。通过删除不需要的文件,在文件组中删除对象,向文件组添加其他文件或为文件组中的现有文件设置自动增长来创建磁盘空间。 数据库中还有另一个表,其中包含约2500万行。该数据库将仅在单台计算机上使用,并且将被设计用于挖掘已经存在的数据,并且在任何情况下都不会超过其当前大小。 对于这种情况,SQL Server不会抱怨的最佳解决方法是什么?解决方案是否关系到该数据库不会暴露给多个用户是否重要?


2
搜索FILESTREAM内部信息
在Microsoft SQL Server 2012上激活FILESTREAM功能后,SQL Server将在系统上创建“隐藏”共享。份额定义如下: Sharename FILESTREAM_SHARE Path \\?\GLOBALROOT\Device\RsFx0320\<localmachine>\FILESTREAM_SHARE Remark SQL Server FILESTREAM share Maximum users unlimited Users Caching Manual caching of documents Permissions NT-AUTHORITY\Authenticated Users, FULL 该名称是您最初在SQL Server配置管理器中配置FILESTREAM时提供的共享的名称。但是,这是为了什么呢? 至今 我从以下位置开始阅读了所有可用的FILESTREAM文档: 文件流(SQL Server) 启用和配置FILESTREAM 创建一个启用了FILESTREAM的数据库 创建用于存储FILESTREAM数据的表 ...以及所有相关的 FILESTREAM与其他SQL Server功能的兼容性 FILESTREAM DDL,函数,存储过程和视图 使用OpenSqlFilestream访问FILESTREAM数据 论文SQL Server 2008-SQL Server 2008中的文件流存储 以及FILESTREAM(OLTP)---设计关键任务OLTP解决方案的技术参考指南,其中引用了许多其他材料 ...但是没有提及份额,份额或用途。您输入名称,SQL Server将在后台创建共享。 …

2
大量INSERT阻止SELECT
我遇到大量阻止SELECT操作的INSERT问题。 架构图 我有一个这样的表: CREATE TABLE [InverterData]( [InverterID] [bigint] NOT NULL, [TimeStamp] [datetime] NOT NULL, [ValueA] [decimal](18, 2) NULL, [ValueB] [decimal](18, 2) NULL CONSTRAINT [PrimaryKey_e149e28f-5754-4229-be01-65fafeebce16] PRIMARY KEY CLUSTERED ( [TimeStamp] DESC, [InverterID] ASC ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF , IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = …

1
SQL Server每天重新创建计划
我们的生产环境中存在这个问题。 Windows NT 6.1(内部版本7601:Service Pack 1)上的Microsoft SQL Server 2008 R2(SP1)-10.50.2500.0(X64)-企业版(64位)。 SQL Server将删除所有(几乎100%)旧的执行计划,并每天隔夜(从11:00 PM到8:00 AM)重新创建它们。当“自动更新统计信息”处于禁用状态时,甚至会发生这种情况。我们已在过去2-3周内启用了“自动更新统计信息”。但它仍在发生。 我们真的不知道是什么触发了计划的重新生成,但是我们确信我们不会手动进行。 与重新生成计划的时间真正吻合的唯一一件事是我们拥有的DB​​维护工作:每日索引重组(当碎片为5-30%时)和每日索引重建(当碎片大于30%时) )的工作。通常,此日常维护工作仅会进行重组(因为索引碎片每天都不会超过30%)。 影响: 这些新创建的计划使一些UDF调用/查询调用(从UI /网页调用)花费的时间更长(几分钟而不是不到1秒),因此会话堆积如山,使CPU接近90% 。 当这些卡住的会话被强制删除(在DB端)时,问题消失了; 1)当手动清除了所有相应的执行计划(对于查询)时,或者2)当UDF改变了(对于功能)时,问题就消失了。从那时起,SQL Server创建的任何新计划都可以在一整天内完美运行,直到第二天早上出现相同问题为止。同样,这种行为也不是100%一致的,我们并不是每天早上都真正看到它。但是,在一段时间内,我们连续4-5天一直在观察它。 问题似乎发生在工作时间早晨,即在更密集地访问UI /网页时。 有谁知道这是什么原因以及如何解决这个问题的线索?任何帮助将非常感激。


2
列出现有的SQL Server登录名和用户
我知道我们可以使用SQL Server中的GUI来检查登录名和定义的用户,但是想知道如何使用脚本来执行此检查。 我在下面运行查询,但显示了Principal_id,我不确定该如何映射以获取权限级别。 SELECT * FROM Sys.login_token 那么,是否有任何内置存储的proc可以列出登录名和用户及其权限级别? 谢谢。


2
如何为域帐户创建Sql Server登录名?
所有, 我在域(比如说AD)的服务器(比如说Server1)上安装了Sql Server 2008 。我也有一个名为AD \ Sql1的域帐户。这不是域(AD)上的管理员帐户,但我希望它成为Server1上的管理员帐户。然后在Sql Server上为该域帐户(而不是本地帐户)创建一个登录名。 我怎么做? 问题: 用户AD \ Sql1,我希望他作为Server1上的管理员。为此,我是否只创建了一个具有相同用户名的本地帐户(例如,Server1 \ Sql1),然后将该本地帐户设置为计算机上的管理员。该本地帐户会自动映射到同名的域帐户吗?也许我应该在这里添加CREATE LOGIN [AD\Sql1] FROM WINDOWS对我不起作用的内容。我尝试并出现错误提示user does not exist in Windows(类似这样的内容) 现在,如果上述技术可行。让我们假设,AD \ SQL1,成为上的管理员Sever1。因此,从理论上讲,我不需要在Sql Server上为该Windows域帐户创建Sql Login,对吗?属于BUILTIT \ Admins的所有本地管理员都会自动具有对Sql Server的sysadmin访问权限,对吗? 我哪里做错了?请分享所有可以更好地解释此概念的URL。 编辑:我还应该补充一点,问题1和2独立重要。我知道如何将域/ Windows帐户添加为sysadmin。但是我对域和本地帐户之间的映射如何工作很感兴趣。我的目标不是要以sysadmin身份添加本地帐户,我可以很快地做到这一点。我的意图不是无礼,而是要尽可能明确。如果我的问题仍然不清楚,请告诉我,以便我添加更多详细信息。 谢谢, _UB 编辑:语法

6
SQL Server清单
在提出其他问题之后,我想开始考虑我应该在每日/每周/每月的基础上根据警报来考虑什么。我希望能够在问题发生之前就看到问题(这是计划)... 到目前为止,我已经开始收集以下脚本(无顺序): 日常 检查系统正常运行时间(以防万一我需要以DBA身份进行检查) 检查上次备份 检查事务日志备份 检查SQL作业的状态 检查最近24小时(或1140分钟)的平均CPU使用率 每周 检查MSDB备份历史记录 检查以查看最后一次运行CheckDB的时间 检查索引碎片 检查索引状态(读与写等) 检查IO瓶颈 每月一次 检查缺少的索引 检查不再使用的索引 还有其他建议吗?(我是DBA的新手,因此随时欢迎您提供帮助/建议)


3
在SQL 2008上复制实例的最有效方法是什么?
我们有一个简单的数据库实例,数据库中只有足够的数据来保持其有用性,我们可以将其用于演示目的,我想将其副本放在笔记本电脑上,以便在以下情况下可以将其用于开发工作我不在办公室 (常规dev数据库实例大约为150GB,这一实例为3GB) 在笔记本电脑上重新创建实例的最可重复/可编写脚本的方法是什么?我确定我将不得不再次通过SqlServer2008的安装程序运行,并设置一个实例,但是在那之后...我想我希望能够每个月左右删除旧数据库,并且将所有新内容复制到我的笔记本电脑上,因为我的实例在一个演示系统或笔记本电脑上都不会更改。但是数据库本身将更新,并更新存储库等。 我考虑过脚本化所有“删除数据库文件;添加数据库文件{path}”并将它们保存在某种可运行的批处理文件中,然后我可以“删除,删除,复制,添加”,但想知道是否存在有没有比xcopy和批处理更好的方法? 我试图以便宜的价格做到这一点(我们不总是尝试以便宜的价格做事情),所以我对RedGate产品或类似产品并不特别感兴趣。我想要自己可以在文本编辑器中轻松维护的内容。

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.