将那个字段设为主键
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名申请、网页空间、营销软件、网站建设、敦化网站维护、网站推广。
------解决方案--------------------------------------------------------
要不然
你只能在逻辑上做判断、先查询数据是否有当前的符号、如果有
就另填。没有的话,就插入
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
要是这个字段不是外键的话,可以设成主键,否则,可以由数据库的标识字段做主键,给这一列
加上唯一约束
------解决方案--------------------------------------------------------
主键或者unique
约束(这个oracle
有,不知sqlserver
有没有)。
这个好像不行吧。
------解决方案--------------------------------------------------------
设主键。用sequence
自增。设置主键
然后也可以写触发器做判断修改
SQL SERVER存储过程解密方法
create PROCEDURE sp_decrypt(@objectName varchar(50))
AS
begin
set nocount on
--CSDN:j9988 copyright:2004.01.05
--V3.1
--破解字节不受限制,适用于SQLSERVER2000存储过程,函数,视图,触发器
--发现有错,请E_MAIL:CSDNj9988@tom.com
begin tran
declare @objectname1 varchar(100),@orgvarbin varbinary(8000)
declare @sql1 nvarchar(4000),@sql2 varchar(8000),@sql3 nvarchar(4000),@sql4 nvarchar(4000)
DECLARE @OrigSpText1 nvarchar(4000), @OrigSpText2 nvarchar(4000) , @OrigSpText3 nvarchar(4000), @resultsp nvarchar(4000)
declare @i int,@status int,@type varchar(10),@parentid int
declare @colid int,@n int,@q int,@j int,@k int,@encrypted int,@number int
select @type=xtype,@parentid=parent_obj from sysobjects where id=object_id(@ObjectName)
create table #temp(number int,colid int,ctext varbinary(8000),encrypted int,status int)
insert #temp SELECT number,colid,ctext,encrypted,status FROM syscomments WHERE id = object_id(@objectName)
select @number=max(number) from #temp
set @k=0
while @k=@number
begin
if exists(select 1 from syscomments where id=object_id(@objectname) and number=@k)
begin
if @type='P'
set @sql1=(case when @number1 then 'ALTER PROCEDURE '+ @objectName +';'+rtrim(@k)+' WITH ENCRYPTION AS '
else 'ALTER PROCEDURE '+ @objectName+' WITH ENCRYPTION AS '
end)
比较简单的做法是数据在存入数据库之前用c#进行加密,然后再存入数据库,读取数据之后,用相应的解密方法对数据进行解密。
但是,如果你一定要在存储过程中加密的话,可以使用c#创建好对应的加密解密方法,然后生成一个加解密的类库dll,在sqlserver中引入该dll中的加密方法进行加密(Sqlserver调用dll的方法sqlserver调用dll),程序中可以直接调用该dll中的解密方法,也可以把解密方法直接写在程序中。
是的到目前为止,SQL Server所有版本的存储过程的加密的机理都是一样的,都可以被非常容易的破解,前提是,有读取存储过程的代码的权。
要防止用户得到SQL Server存储过程的真实代码,最简单的做法就是只给执行权,不给查看权。
至于安装在别人服务器上的SQL Server数据库中的存储过程,想不让别人看,那基本上是没门儿的。