1

所以我整天都在与这个问题作斗争。起初我认为这一定与我的调用代码有关,尽管一切看起来都很好。调用代码只是来自 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
4

1 回答 1

5

您应该避免将sp_其用作存储过程的前缀 - 它保留给 Microsoft 使用 - 并调用奇怪的查找规则(master在当前数据库之前搜索),这意味着 MS 是否引入了同名的 SP(例如通过服务包),MS SP 将“获胜”。

但是在这种情况下,Microsoft已经“赢了”——他们有一个名为 的存储过程sp_adduser,而它就是被调用的那个。重命名您的存储过程。

于 2013-04-10T14:56:20.350 回答