预览模式: 普通 | 列表

Microsoft SQL Server错误: 15138删除对于用户失败,数据库主体在该数据库中拥有架构,无法删除。
删除 对于 用户“*****”失败。 (Microsoft.SqlServer.Smo)

其他信息:

执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)

解决方法一

先删除此用户对应的架构,然后在删除对应的用户
步骤
1。SQL SERVER MANAGEMENT STUDIO -> 数据库 -> 安全性 -> 构架,先删除对应的构架
2。SQL SERVER MANAGEMENT STUDIO -> 数据库 -> 安全性 -> 用户,删除对应的用户

解决方法二

查看更多...

分类:SQL | 固定链接 | 评论: 0 | 人气: 93℃

SQL Server 2005中实现数据同步

在SQL Server 2005中,使用复制,可以在局域网和广域网上将数据分发到不同位置,可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性。

现在假如有一个这样的应用,有一个游戏服务商在推广一个大型游戏的时候,现在架设了多台数据库服务器,为了数据的便于统计,最终这些数据可以自动的转入到指定存储的另一台服务器中,这时候就会面临着一个这样的问题,如何保证这些多台数据库之间的数据的同步呢?

我们就可以使用复制的办法,复制是将一组数据或数据库对象从一个数据库复制和分发到另外一个数据库,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。使用复制,可以在局域网和广域网上将数据分发到不同位置,可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性。

查看更多...

分类:SQL | 固定链接 | 评论: 0 | 人气: 169℃

ASP.NET使用SQL Server Compact Edition

SQL Server Compact Edition默认是不支持ASP.NET的;
如果你硬要将 SQL CE 数据库 ( *.sdf ) 加入到 Visual Studio 项目中,其实也是可以正常开发,不过在执行的时候就会出现以下错误:


如果你一定要用的话,可以在 HttpApplication 的 Application_Start 事件 ( 在 Global.asax 中 ) 加入以下代码:
AppDomain.CurrentDomain.SetData("SQLServerCompactEditionUnderWebHosting", true);
即可让 ASP.NET 支持 SQL Server Compact 数据库;
演示代码:
using System.Data.SqlServerCe;

查看更多...

分类:SQL | 固定链接 | 评论: 0 | 人气: 186℃

SQL 2005 ROW_NUMBER() 语句分页

用 SQL 2005 的 row_number() 做的分页,表上建1个聚集索引、三个非聚集索引、两个全文索引。 
从 1000 万条记录中按特定条件提取1~200条,耗时在 3 秒以内。平均60个并发用户请求。
语句A:
Select * FROM 
(Select ROW_NUMBER() OVER (ORDER BY [id] ASC) AS RowNum, * FROM table) AS T 
Where RowNum BETWEEN X AND Y
语句B:
Select TOP 10 * FROM
(Select row_number() over(order by id) as RowNum, Company_Info.* from Company_Info) AS TempTable
Where TempTable.RowNum > 1 * 10

查看更多...

分类:SQL | 固定链接 | 评论: 0 | 人气: 243℃

单主键高效通用分页存储过程

Create PROC P_viewPage 
/*
nzperfect [no_mIss] 高效通用分页存储过程(双向检索) 2007.5.7QQ:34813284
敬告:适用于单一主键或存在唯一值列的表或视图
ps:Sql语句为8000字节,调用时请注意传入参数及sql总长度不要超过指定范围
*/
@TableName VARCHAR(200), --表名
@FieldList VARCHAR(2000),--显示列名,如果是全部字段则为*
@PrimaryKey VARCHAR(100),--单一主键或唯一值键
@Where VARCHAR(2000),--查询条件 不含'where'字符,如id>10 and len(userid)>9
@Order VARCHAR(1000),--排序 不含'order by'字符,如id asc,userid desc,必须指定asc或desc
--注意当@SortType=3时生效,记住一定要在最后加上主键,否则会让你比较郁闷

查看更多...

分类:SQL | 固定链接 | 评论: 0 | 人气: 199℃

SQL优化34条[SQL收藏]

我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享!
(1)选择最有效率的表名顺序(只在基于规则的优化器中有效):
orACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.
(2)Where子句中的连接顺序.:
orACLE采用自下而上的顺序解析Where子句,根据这个原理,表之间的连接必须写在其他Where条件之前, 那些可以过滤掉最大数量记录的条件必须写在Where子句的末尾.
(3)Select子句中避免使用 ‘ * ‘:

查看更多...

分类:SQL | 固定链接 | 评论: 0 | 人气: 330℃

另类SQL分页算法

declare @col int

select top {PageSize * (PageNo-1)+1} @col = [排序字段] 
from [表名 |视图名] 
[ where 查询条件 ] 
order by [排序字段] asc

select top PageSize 需要显示的字段 
from [表名 |视图名] 
where [排序字段] >= @col
[ and 查询条件 ]

查看更多...

分类:SQL | 固定链接 | 评论: 0 | 人气: 514℃

修改Access表结构(转)

在ACCESS里,备注类型用Memo表示,所以改变字段的数据类型为备注的SQL为:

Alter TABLE user Alter COLUMN userinfo Memo
 
如果user表有外键,而且你要修改的字段就是外键的话,你就不能再做修改。

下面给出修改为其它类型的SQL(表为tb,字段为aa):

Alter TABLE tb Alter COLUMN aa Byte 数字[字节]。

Alter TABLE tb Alter COLUMN aa Long 数字[长整型]。

Alter TABLE tb Alter COLUMN aa Short 数字[整型]。

Alter TABLE tb Alter COLUMN aa Single 数字[单精度]。

Alter TABLE tb Alter COLUMN aa Double 数字[双精度]。

查看更多...

分类:SQL | 固定链接 | 评论: 0 | 人气: 457℃
很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解。比如:
select * from table1 where name='zhangsan' and tID > 10000
 和执行:
select * from table1 where tID > 10000 and name='zhangsan'
  一些人不知道以上两条语句的执行效率是否一样,因为如果简单的从语句先后上看,这两个语句的确是不一样,如果tID是一个聚合索引,那么后一句仅仅从表的10000条以后的记录中查找就行了;而前一句则要先从全表中查找看有几个name='zhangsan'的,而后再根据限制条件条件tID>10000来提出查询结果。
  事实上,这样的担心是不必要的。SQL SERVER中有一个“查询分析优化器”,它可以计算出where子句中的搜索条件并确定哪个索引能缩小表扫描的搜索空间,也就是说,它能实现自动优化。

查看更多...

分类:SQL | 固定链接 | 评论: 0 | 人气: 459℃

SQL比较两字符串相似度

create function f_StrCompare(@str1 varchar(8000),@str2 varchar(8000)) 
returns varchar(10) 
as 
begin 
declare @i int,@j int,@k int,@ret varchar(10) 
select @i = max(strlen),@j=min(strlen),@k=0 
from (select strlen=len(@str1) union select strlen=len(@str2)) t 

if(@j=0) 
return '0%' 

while @j>0 
begin 
if substring(@str1,@j,1)=substring(@str2,@j,1) 
set @k=@k+1 
set @j=@j-1 
end 

set @ret = rtrim(cast(@k*100.0/@i as numeric(3,0)))+'%' 

查看更多...

分类:SQL | 固定链接 | 评论: 0 | 人气: 1063℃

SQL触发器使用方法

USE [TEST]
GO
IFEXISTS (Select * FROM sys.objects Where object_id = OBJECT_ID(N'[dbo].[ta]') AND type in (N'U'))
Drop TABLE [dbo].[ta]

GO
IFEXISTS (Select * FROM sys.objects Where object_id = OBJECT_ID(N'[dbo].[tb]') AND type in (N'U'))
Drop TABLE [dbo].[tb]

USE [TEST]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create TABLE [dbo].[ta](
[id] [int] IDENTITY(1,1) NOT NULL,
[fname] [nvarchar](50) NULL

查看更多...

分类:SQL | 固定链接 | 评论: 0 | 人气: 790℃