我有一个非常大的SQL Server 2008 R2数据库(1.5TB),并将在同一个表中将一些数据从一列复制到另一列.我被告知架构有大量索引,并且想知道是否存在将重建所有索引的默认查询或脚本.还建议同时更新统计数据?
30个表中的每一个都有一个聚簇索引和13个非聚簇索引
谢谢.
我已经在这一天工作了大约一天半,并在网上搜索了大量的博客和帮助文章.我发现了几个与此错误有关的SO问题,但我认为它们并不适用于我的情况(或者在某些情况下,遗憾的是,我无法理解它们的实现:P).我不确定我能够很好地描述这一点以获得帮助......但是这里有:
我们有一个.NET应用程序来跟踪我们的资源.有一个导出功能可以将资源复制到时间跟踪系统和计费系统; 这将访问链接到时间和计费数据库的存储过程.
我最近将计费系统数据库移动到新服务器(原始服务器:Server 2003 SP2,SQL 2005;新服务器:Server 2008 R2,SQL 2008 R2).我有一个指向2008数据库的链接服务器设置.我更新了存储过程以指向2008服务器,然后我收到有关MSDTC和RPC的错误(http://www.safnet.com/writing/tech/archives/2007/06/server_myserver.html).我在链接服务器上启用了"rpc/rpc out"并将MSDTC设置为允许网络访问(类似于:http://www.sqlwebpedia.com/content/msdtc-troubleshooting).
现在,当我尝试运行导出功能时,我得到了上述内容:"此SqlTransaction已完成;它已不再可用." 对我来说似乎很奇怪的是,当我刚刚运行存储过程(来自SSMS)时,它表示它已成功完成.
谁看过这个吗?我在配置中遗漏了什么吗?我继续浏览相同的页面,我发现的唯一一件事是我在进行MSDTC更改后没有重新启动(在此处提到:http://social.msdn.microsoft.com/forums/en-US/adodotnetdataproviders/thread/7172223f-acbe-4472-8cdf-feec80fd2e64 /).
我可以发布部分或全部存储过程,如果它有帮助...请告诉我.
处理临时表的删除的最佳做法是什么.我已经读过你应该显式处理drop以及sql server应该处理drop ....正确的方法是什么?我总是觉得你应该自己清理你在sproc中创建的临时表等等.但是,然后我找到了其他的建议.
任何见解将不胜感激.我只是担心我没有遵循我创建的临时表的最佳实践.
谢谢,
小号
如何使用Windows身份验证将MS SQL Server与pyodbc库连接?
我可以通过MS Access和SQL Server Management Studio连接,但无法获得Python的工作连接ODBC字符串.
这是我尝试过的(也没有'Trusted_Connection=yes'):
pyodbc.connect('Trusted_Connection=yes',
driver='{SQL Server}', server='[system_name]',
database='[databasename]')
pyodbc.connect('Trusted_Connection=yes', uid='me',
driver='{SQL Server}', server='localhost',
database='[databasename]')
pyodbc.connect('Trusted_Connection=yes',
driver='{SQL Server}', server='localhost',
uid='me', pwd='[windows_pass]', database='[database_name]')
pyodbc.connect('Trusted_Connection=yes',
driver='{SQL Server}', server='localhost',
database='[server_name]\\[database_name]')
pyodbc.connect('Trusted_Connection=yes',
driver='{SQL Server}', server='localhost',
database='[server_name]\[database_name]')
pyodbc.connect('Trusted_Connection=yes',
driver='{SQL Server}',
database='[server_name]\[database_name]')
Run Code Online (Sandbox Code Playgroud) sql-server odbc windows-authentication pyodbc sql-server-2008-r2
我正在使用SQL Server 2008 R2 Express.
我首先安装了SQL Server 2008 R2 Express Management Studio,然后安装了SQL Server 2008 R2 Express.我有实例SQLEXPRESS运行,它被设置为自动.
我正在尝试使用Windows身份验证在本地连接到它 - 服务器名称设置为本地,用户名显示为灰色并设置为我的配置文件用户名.
当我尝试连接时,我收到以下错误:

我安装了错误的SQL Server Management Studio吗?
我们为SQL Server 2008 R2开发了一个程序集.
大会已经工作了一个星期.程序集内的托管存储过程在整个星期都运行良好,然后它停止工作.我们已经多次看到这个问题了.使其再次工作的方法是重新启动SQL Server.
Msg 10314, Level 16, State 11, Line 4
An error occurred in the Microsoft .NET Framework while trying to load assembly id 65536. The server may be running out of resources, or the assembly may not be trusted with PERMISSION_SET = EXTERNAL_ACCESS or UNSAFE. Run the query again, or check documentation to see how to solve the assembly trust issues. For more information about this error:
System.IO.FileLoadException: Could not load file or assembly 'myAssembly, …Run Code Online (Sandbox Code Playgroud) 我在SQL Server 2008 R2数据库中有一个表,并且想要添加一个名为LastUpdated的列,每次更新行时都会自动更改.这样,我可以看到每个行最后一次更新的时间.
似乎SQL Server 2008 R2没有像早期版本那样处理这种数据类型,所以我不确定最好的方法.我想知道使用触发器,但是当触发器更新行时会发生什么?那会再触发触发器等吗?
我刚刚创建了一个After After Trigger,其语法如下:
Create trigger tgrInsteadTrigger on copytableto
Instead of Insert as
Declare @store_name varchar(30);
declare @sales int;
declare @date datetime;
select @store_name = i.store_name from inserted i
select @sales = i.sales from inserted i
select @date = i.Date from inserted i
begin
if (@sales > 1000)
begin
RAISERROR('Cannot Insert where salary > 1000',16,1); ROLLBACK;
end
else
begin
insert into copytablefrom(store_name, sales, date) values (@store_name, @sales, @date);
Print 'Instead After Trigger Executed';
end
End
Run Code Online (Sandbox Code Playgroud)
在我使用的上述语法中 RAISERROR('Cannot Insert where salary > …
sql database sql-server-2005 sql-server-2008 sql-server-2008-r2
我有一些数据,我想根据可能存在或不存在的分隔符进行拆分.
示例数据:
John/Smith
Jane/Doe
Steve
Bob/Johnson
Run Code Online (Sandbox Code Playgroud)
我使用以下代码将此数据拆分为名字和姓氏:
SELECT SUBSTRING(myColumn, 1, CHARINDEX('/', myColumn)-1) AS FirstName,
SUBSTRING(myColumn, CHARINDEX('/', myColumn) + 1, 1000) AS LastName
FROM MyTable
Run Code Online (Sandbox Code Playgroud)
结果我想:
FirstName---LastName
John--------Smith
Jane--------Doe
Steve-------NULL
Bob---------Johnson
Run Code Online (Sandbox Code Playgroud)
只要所有行都具有预期的分隔符,此代码就可以正常工作,但是当行没有时出错:
"Invalid length parameter passed to the LEFT or SUBSTRING function."
Run Code Online (Sandbox Code Playgroud)
如何重写这个才能正常工作?
我有一个SQL表突然无法返回数据,除非我在末尾包含"with(nolock)",这表示我的表上有某种锁.我已经用dm_tran_locks进行了一些实验,以确定表中实际上存在多个锁,但是如何识别锁定它们的是什么(即dm_tran_locks的请求元素)?
编辑:我知道SQL 2005之前的sp_lock,但现在不推荐使用sp,AFAIK正确的做法是使用dm_tran_locks.我正在使用SQL Server 2008 R2.
sql sql-server locking query-optimization sql-server-2008-r2