Articles of sql server

SQL Server 2Kx:如何将数据库移动到本地文件系统中的其他分区?

SQL Server在系统程序文件目录结构中创build其数据库。 我想将数据库文件从系统分区中分离出来。 假设数据库已经被创build和填充:如何将与数据库相关的所有文件移动到单独分区上的不同位置?

sys.dm_exec_query_stats与重新编译的交互

我们使用sys.dm_exec_query_stats来追踪缓慢的查询和查询,这些是IO违规者。 这很好,我们得到了很多非常有见地的数据。 很明显,这并不像运行一个profiler跟踪那样准确,因为你不知道SQL Server何时决定执行一个执行计划。 我们有很多查询错误的执行计划被caching。 例如下面的查询: selectTOP 30 援助 FROMposta JOINpostq ON q.Id = a.ParentId JOIN PostTags pt ON q.Id = pt.PostId WHERE a.PostTypeId = 2 AND a.DeletionDate IS NULL AND a.CommunityOwnedDate IS NULL AND a.CreationDate> @date 和LEN(a.Body)> 300 AND pt.Tag = @tag AND a.Sore> 0 ORDER BY aCore DESC 问题是理想的计划真的取决于所选的date(理想计划的截图): 但是,如果错误的计划被caching,当date范围很大时,它会完全窒息:(注意大胖子) 为了克服这个问题,我们build议使用OPTION (OPTIMIZE FOR […]

只能通过命名pipe道连接到SQL Server Express 2012

我有SQL Server Express 2012安装在Windows 2008上,本地一切工作正常,我可以连接通过TCPIP和命名pipe道。 远程我可以连接ssms 只使用命名pipe道。 远程我的意思是在同一个局域网内,他们被插入到同一个交换机。 我已经尝试禁用双方的防火墙,以消除阻塞的stream量。 我已经打开和closurestcpip设置(我读了一个地方,他们得到它只是工作,但把它们打开,然后回来)。 我有双重/三重检查所有我知道的设置,一切似乎是正确的。 Tcp已启用 TCP端口设置为1433,udp端口设置为1434 服务器有静态IP 启动日志说: 服务器正在侦听['any'1433]。 防火墙规则已经到位 任何build议,我可以看看的东西? 我真的只是用完了想法。 编辑 :我曾经有一个在这个盒子上安装的SQL Server 2008的副本之前,我切换到2012年。我卸载2008年,然后安装2012年快递; 不知道这是否改变了什么,但它的难题的另一部分。 编辑#2 :这是我尝试远程连接.net应用程序的错误消息。 与服务器build立了连接,但在login前握手过程中发生错误。 (提供程序:SSL提供程序,错误:0 – 等待操作超时。)] 编辑#3 :它看起来像这样的事情,当你安装Visual Studio 11或更可能.net 4.5,至less对一些人来说,打破了; 我也是这么做的 安装VS 11之后的连接错误还有一些细节

无法连接到SQL Server 2008 – 看起来像共享内存问题

我无法使用SQL Server Management Studio连接到SQL Server 2008 Express的本地实例。 我相信这个问题与我对连接协议的改变有关。 在发生错误之前,我启用了共享内存并禁用了命名pipe道和TCP / IP。 然后,我启用命名pipe道和TCP / IP,这是当我开始遇到问题。 当我尝试连接到服务器与SSMS(与我的SQL服务器的系统pipe理员login或与Windows身份validation),我得到以下错误信息: 与服务器build立了连接,但在login过程中发生错误。 (提供程序:命名pipe道提供程序,错误:0 – pipe道的另一端没有进程。)(Microsoft SQL Server,错误:233) 为什么它返回一个命名pipe道错误? 为什么不使用共享内存,因为这在连接协议列表中具有更高的优先级顺序? 这似乎是因为某些原因不在共享内存上进行侦听? 当我将命名pipe道设置为启用并尝试连接时,我收到相同的错误消息。 我的Windows帐户是没有我的计算机上的pipe理员priviliges – 也许这在某种程度上有所作为(如本文中有关“SuperSocketNetLib \ LPC”registry键的build议似乎build议)。 顺便说一下,我已经尝试重新启动SQL Server服务,并试图让某人使用pipe理员帐户login到计算机,以重新启动SQL Server服务。 仍然没有运气。

将SQL Server备份到networking共享

如何将SQL Server数据库备份到networking共享?

Perl TDS字符集

我正在使用DBD :: Sybase的FreeTDS驱动程序,连接到MS SQL Server。 当我查询某些logging的某些值时,我得到这个错误: DBD::Sybase::st fetchrow_arrayref failed: OpenClient message: LAYER = (0) ORIGIN = (0) SEVERITY = (9) NUMBER = (99) Server , database Message String: WARNING! Some character(s) could not be converted into client's character set. Unconverted bytes were changed to question marks ('?'). 这似乎发生在包含特殊Windows字符集字符的logging中,例如curl的引号,从人们的Outlook和Word消息中复制和粘贴。 不幸的是,我对这个数据库没有任何控制。 在途中清理input显然是一种去路,但是对我来说是不可用的。 我需要更改哪些FreeTDS设置才能成功查询这些logging? 附加信息: 查询从tsql工作正常。 我只通过Perl的DBD :: […]

MSSQL大删除

我有一个MSSQL数据库中的表,其中包含超过100万的logging分布在大约100天的数据。 我需要基于它的date清除这些数据,这是表中的索引字段。 我试过对个别date做DELETE FROM,但执行时间很长,导致服务器性能下降。 有没有更好的方法来删除这么多的logging? 其中一些数据仍然是必需的,所以不幸的是我不能使用截断。 非常感谢尼克

SQL Server 2008中的证书

我需要在我的应用程序和Sql Server 2008之间实现SSL传输。 我使用的是Windows 7,Sql Server 2008,Sql Server Management Studio,而我的应用程序是用c#编写的。 我试图按照关于创build证书的MSDN页面, 这在“Encrpyt为一个特定的客户端”,但我无可救药的困惑。 我需要一些小小的步骤来成功实现encryption。 首先,我不明白MMC。 我在那里看到很多证书……这些证书是我应该用于自己的encryption还是被用于已经存在的事情? 另一件事,我假设所有这些证书文件都位于我的本地计算机上,为什么有一个名为“个人”的文件夹? 其次,为了避免上述问题,我做了一个自签名程序集的小实验。 如上面的MSDN链接所示,我使用了在SSMS中执行的SQL来创build一个自签名证书。 然后我使用下面的连接string来连接: Data Source=myServer;Initial Catalog=myDatabase;User ID=myUser;Password=myPassword;Encrypt=True;TrustServerCertificate=True 它连接,工作。 然后,我删除了我刚创build的证书,它仍然工作。 显然它从来没有做任何事情,但为什么不呢? 我怎么知道它是否真的在“工作”? 我想我可能会错过一个中间步骤(以某种方式)将文件从SSMS上传到客户端上? 我不知道我在做什么,所以任何帮助,build议,意见,引用你可以给我非常感激。 先谢谢你。 🙂

在SQL Server 2008中更改数据库所有者; CLR问题取决于使用的方法?

我附加了一个数据库,并尝试将所有者更改为有效的login名。 我使用了语句:ALTER AUTHORIZATION ON database :: my_db_name TO“sa”。 数据库属性显示新的所有者是'sa',但是我仍然获得了不受限制的CLR程序集(0x80FC80F1,0x8013150A)的权限错误,这是关于程序集信任问题的。 我解决了这个问题,而不是使用语句:EXEC sp_changedbowner'sa'; 更改数据库所有者。 我的问题是,这两种更改数据库所有者的方法有什么区别。 他们是否等同? 在我看来很清楚,sp_changedbowner正在做一些更正确的事情,即alter authorization语句没有做的事情。 如果你有兴趣…在修改sp_changedbowner之前,我试过了: 将数据库的可信赖性设置为ON; 其实我这样做了几次; 我知道这是要求运行不受限制的,未签名的自定义CLR程序集 把每个CLR大会的主人换成dbo,因为主人是空白的,但显然dbo已经是主人了,在SSMS里总是空白。 将每个CLR程序集的所有者更改为其他东西,但这不起作用,因为具有相关程序集的程序集似乎总是需要相同的所有者; 但是不可能通过所提供的接口同时改变所有者。 把GRANT UNSAFE ASSEMBLY称为[sa]; 显然你不能授予该内置帐户的权限,以及一些其他的; 他们已经有了许可 拨打GRANT UNSAFE ASSEMBLY到[NT AUTHORITY \ NETWORK SERVICE](汇编中的账户调用方法); 没有错误,但似乎没有实现任何东西(也许改变了错误号码?消息从来没有改变虽然)。 …可能还有其他一些我不记得的东西。

如何为已命名的SQL Server实例创build别名

在我的开发人员计算机上,我有一个名为developer_2005的SQL Server实例。 在我们正在创build的C#应用​​程序的资源设置文件中,实例名称被设置为foob​​ar (不是真的,而仅仅是一个例子)。 所以,当我运行应用程序(在debugging或realease)它试图连接到本地主机上的SQL Server,名为foob​​ar 。 我想知道是否可以创build一个别名或类似的东西,以便应用程序实际上find名为foob​​ar的本地主机上的SQL Server,但它实际上是连接到名为developer_2005的实例。 应用程序的configuration文件中的连接string是Data Source = localhost \ foobar; Initial Catalog = barfoo;集成安全性= True ,提供程序名称为System.Data.SqlClient 。 如果我将localhost \ foobar更改为localhost \ developer_2005,则应用程序可以像应该那样进行连接。 我如何创build一个别名,以便我不必更改文件中的string? 我试图在SQL Server Management Studio中创build一个注册服务器名称为“localhost \ developer”的服务器注册,但这似乎没有任何好处。 甚至不知道是什么真的…但后来我发现SQL Serverconfigurationpipe理器\ SQL本机客户端configuration\别名。 我认为这是解决scheme所在。 但我不能完全弄清楚如何添加一个新的…当创build一个新的,我必须提供别名,端口号,协议和服务器,我真的不知道该怎么把的任何一方。