我现在有一张有604 000行的表.我想删掉4000个随机行,所以我的表只包含60万个条目.
会有快速的方法吗?
非常感谢.
我一直在研究使用GUID作为数据库中的主键.到目前为止,职业选手似乎超过了缺点.但是,我看到GUID可能不是我想要的一点.
在我的应用程序中,用户应该能够基于用户友好的ID识别对象.因此,例如,如果他们想要在不输入全名的情况下获得特定产品,他们可以使用产品的ID.对于类似的东西,GUID并不容易记住.
我一直在考虑的解决方案是同时使用GUID和自动递增整数.GUID将是行的主键,而自动递增的整数将是应用程序的过滤函数使用的索引.但是,所有SQL SELECT,UPDATE,DELETE语句都将使用GUID.
我想使用GUID的主要原因是在合并两个数据库时防止冲突.如果Database#1和Database#2都有Product#2,则导入器脚本必须更改ID以及引用它的所有外键.使用GUID,我只需要更改表本身的用户友好ID,而外键将使用每个导入记录唯一的GUID,因此无需修改即可使用.
所以,我的问题是:是否有任何重大问题(除了GUID字段的大小和简单的页面碎片)与自动递增整数索引和GUID主键?
我正在尝试用C#编写简单的应用程序,这将允许我备份,压缩和通过ftp发送我的SQL Server数据库.我遇到的一个问题是,如果我尝试在"C:\ Program Files\Microsoft SQL Server\MSSQL.3\MSSQL\Backup"之外的其他位置执行此操作,则无法创建备份文件(.bak)或"C:\ Program Files\Microsoft SQL Server\MSSQL.3\MSSQL\Data"文件夹.我知道这是一个暂缓问题.有人可以指向我的资源或在这里写一个简短的片段如何以编程方式将这样的权限添加到我的系统上的任何文件夹.
关心克里斯
如何在SQL 2005中删除属于特定表的所有默认约束?
我通常在我的存储过程中使用完全显式事务(BEGIN TRANSACTION .... COMMIT).我只是跑过一个旧的,而是在代码中的某些地方使用"CHECKPOINT".
这不会做同样的事情,对吧?即使数据库处于简单模式,整个事情仍然会作为一个大事务运行,即使有一堆检查点卡在中间?
我正在处理执行一些动态sql的存储过程.这是我在4GuysFromRolla.com上找到的例子
CREATE PROCEDURE MyProc
(@TableName varchar(255),
@FirstName varchar(50),
@LastName varchar(50))
AS
-- Create a variable @SQLStatement
DECLARE @SQLStatement varchar(255)
-- Enter the dynamic SQL statement into the
-- variable @SQLStatement
SELECT @SQLStatement = "SELECT * FROM " +
@TableName + "WHERE FirstName = '"
+ @FirstName + "' AND LastName = '"
+ @LastName + "'"
-- Execute the SQL statement
EXEC(@SQLStatement)
Run Code Online (Sandbox Code Playgroud)
如果您注意到,他们使用的是SELECT intead of SET.我不知道你能做到这一点.有人可以向我解释2之间的区别吗?我一直以为SELECT只是为了选择记录.
如果我不需要主键,我不应该添加一个数据库吗?
我有以下select语句几乎立即完成.
declare @weekending varchar(6)
set @weekending = 100103
select InvoicesCharges.orderaccnumber, Accountnumbersorders.accountnumber
from Accountnumbersorders, storeinformation, routeselecttable,InvoicesCharges, invoice
where InvoicesCharges.pubid = Accountnumbersorders.publication
and Accountnumbersorders.actype = 0
and Accountnumbersorders.valuezone = 'none'
and storeinformation.storeroutename = routeselecttable.istoreroutenumber
and storeinformation.storenumber = invoice.store_number
and InvoicesCharges.invoice_number = invoice.invoice_number
and convert(varchar(6),Invoice.bill_to,12) = @weekending
Run Code Online (Sandbox Code Playgroud)
但是,等效的更新语句需要1分40秒
declare @weekending varchar(6)
set @weekending = 100103
update InvoicesCharges
set InvoicesCharges.orderaccnumber = Accountnumbersorders.accountnumber
from Accountnumbersorders, storeinformation, routeselecttable,InvoicesCharges, invoice
where InvoicesCharges.pubid = Accountnumbersorders.publication
and Accountnumbersorders.actype = 0
and dbo.Accountnumbersorders.valuezone = 'none'
and storeinformation.storeroutename = routeselecttable.istoreroutenumber
and …Run Code Online (Sandbox Code Playgroud) 调用此代码的客户端受到限制,只能处理来自存储过程的返回码.因此,我们将通常的合同修改为RETURN -1错误,默认为RETURN 0无错误
如果代码命中内部catch块,则RETURN代码默认为-4而不是0
有谁知道这来自哪里?供参考
干杯gbn
IF OBJECT_ID('dbo.foo') IS NOT NULL DROP TABLE dbo.foo
GO
CREATE TABLE dbo.foo (
KeyCol char(12) NOT NULL,
ValueCol xml NOT NULL,
Comment varchar(1000) NULL,
CONSTRAINT PK_foo PRIMARY KEY CLUSTERED (KeyCol)
)
GO
IF OBJECT_ID('dbo.bar') IS NOT NULL DROP PROCEDURE dbo.bar
GO
CREATE PROCEDURE dbo.bar
@Key char(12),
@Value xml,
@Comment varchar(1000)
AS
SET NOCOUNT ON
DECLARE @StartTranCount tinyint;
BEGIN TRY
SELECT @StartTranCount = @@TRANCOUNT;
IF @StartTranCount = 0 BEGIN …Run Code Online (Sandbox Code Playgroud) 所有文档和信息都表明我们必须在要使用它的机器上安装MQ系列客户机.
有谁知道一个DLL(或其他),使我们能够包括一个.NET项目MQ系列的支持并不需要本地安装?
sql-server ×7
t-sql ×4
sql ×3
primary-key ×2
.net ×1
backup ×1
c# ×1
constraints ×1
database ×1
guid ×1
ibm-mq ×1
indexing ×1
mysql ×1
performance ×1
permissions ×1
php ×1
transactions ×1
triggers ×1