所以我现在整天都在和这个问题作斗争。起初我认为必须使用我的调用代码,即使这一切看起来都不错。调用代码只是来自VB代码隐藏文件的标准调用,并且无论如何都没有链接到数据绑定。我提到这一点,因为我已经看到很多其他人因为DataGrids等而有这个问题。
然后我转到数据库本身并手动执行该过程,它在SQL Sevrer Manager中给出了相同的错误。我已经尝试删除该过程并重新创建它,甚至从头开始重写它仍然会发生。我也尝试从@Password参数中删除默认的NULL值,但仍然没有变化。
我正在运行SQL Server 2008 R2
以下是程序代码:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_AddUser]
@Username varchar(50),
@Fullname varchar(50),
@Password varchar(50) = NULL,
@Datecreated DateTime,
@RoleID int,
@ResetPwd bit,
@Email varchar(50),
@locked bit,
@Sign varchar(max),
@Sysuser bit
AS
BEGIN
INSERT INTO users (
user_name,
full_name,
password,
datetime_created,
role_id,
password_reset,
email_address,
locked,
email_signature,
asrsys_user)
VALUES (
@Username,
@Fullname,
@Password,
@Datecreated,
@RoleID,
@ResetPwd,
@Email,
@locked,
@Sign,
@Sysuser)
END
答案 0 :(得分:5)
您应该避免使用sp_
作为存储过程的前缀 - 它保留给Microsoft使用 - 并调用奇怪的查找规则(在当前数据库之前搜索master
),这意味着, MS引入同名的SP(通过例如服务包),MS SP将“赢”。
但是在这种情况下,微软已经已经“赢了” - 他们有一个名为sp_adduser
的存储过程,而且正是被调用的存储过程。重命名存储过程。