avatar_GrInYa

Как избавиться от ошибки "error-L1 : CloseClient INVALID_SOCKET"? Помощь для игроков MU Online на Wi

Автор GrInYa, 2010 Май 20, 21:17

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Ключевые слова [SEO] mu onlinewz_connect_membwindows xp sp3

GrInYa

как избавится от такого ерора "error-L1 : CloseClient INVALID_SOCKET"?...а то он выкидывает всех с игры

это не помогает:
Спойлер
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MEMB_STAT_GJ]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[MEMB_STAT_GJ]
GO

CREATE TABLE [dbo].[MEMB_STAT_GJ] (
[memb___id] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[name] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[ServerName] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[ServerCode] [int] NULL ,
[IP] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[TM] [datetime] NULL
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[WZ_CONNECT_MEMB]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[WZ_CONNECT_MEMB]
GO

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS OFF
GO

CREATE PROCEDURE WZ_CONNECT_MEMB
@uid varchar(10),
@server varchar(20),
@uip varchar(20)
AS

Begin

BEGIN TRANSACTION

SET NOCOUNT ON

IF EXISTS ( SELECT memb___id FROM MEMB_STAT WITH (READUNCOMMITTED) WHERE memb___id = @uid )
Begin
UPDATE MEMB_STAT
SET ip = @uip , connectstat = 1 , servername = @server , ConnectTM = (getdate())
WHERE memb___id = @uid
End
ELSE
Begin
INSERT INTO MEMB_STAT ( memb___id,ip,connectstat,servername)
valueS (@uid,@uip,1,@server )
End
IF(@@Error <> 0 )
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION

--写入登录记录
IF EXISTS ( SELECT UserID FROM UserLogin WITH (READUNCOMMITTED) WHERE UserID = @uid )
Begin
UPDATE UserLogin
SET LoginIP=@uip,Server=@server,LoginTM = (getdate()),OnlineSec=0,GiveMoney=0,logoutTM=null
WHERE UserID = @uid
End
ELSE
Begin
INSERT INTO UserLogin (UserID,LoginIP,Server,LoginTM,OnlineSec,GiveMoney )
values (@uid,@uip,@server,getdate(),0,0)
End
--自动封服务器不准进入的人物
declare @SmallestZS int
declare @LargestZS int
declare @Type int
select @Type=Type from SetServerList where ServerName=@server

if (@Type>0) begin

select @SmallestZS=Smallest_ZS from SetServerList where ServerName=@server
select @LargestZS=Largest_ZS from SetServerList where ServerName=@server

if not (@SmallestZS is null) begin
update character set ctlcode=(ctlcode | 0x81) where [name] not in
(
SELECT NAME FROM WEB_ZS WHERE (ACC = @uid) AND (ZSCS >= @LargestZS) AND (ZSCS <= @SmallestZS)
) AND (AccountID = @uid)
end
end
DELETE FROM MEMB_STAT_GJ WHERE (memb___id = @uid and servername=@server)
update character set ctlcode=(ctlcode | 0x81) where [name] in
(
SELECT name FROM MEMB_STAT_GJ WHERE (memb___id = @uid)
) AND (AccountID = @uid)

SET NOCOUNT OFF
End
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
[свернуть]

и ещё от такого...в логах каждые несколько секунд появляется такой ерор...

21:12:10 connect : [7169][127.0.0.1]
Connection Closed, dwIoSize == 0 (Index:7169)
21:12:10 (7169)logout :  [127.0.0.1]

ketanof

#1
1. Удалить из Stored Procedures - WZ_CONNECT_MEMB
2. Добавить в Query Analyzer код, приведённый ниже:
Спойлер

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[WZ_CONNECT_MEMB]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[WZ_CONNECT_MEMB]
GO

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE PROCEDURE WZ_CONNECT_MEMB

@uid varchar(20),
@server varchar(20),
@uip varchar(20)
AS

Begin

BEGIN TRANSACTION

SET NOCOUNT ON

IF EXISTS ( SELECT memb___id FROM MEMB_STAT WITH (READUNCOMMITTED)
WHERE memb___id = @uid )
Begin
UPDATE MEMB_STAT
SET ip = @uip , connectstat = 1 , servername = @server , ConnectTM = (getdate())
WHERE memb___id = @uid
End
ELSE
Begin
INSERT INTO MEMB_STAT ( memb___id,ip,connectstat,servername) valueS (
@uid,
@uip,
1,
@server
)
End


IF(@@Error <> 0 )
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION

SET NOCOUNT OFF
End



GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
[свернуть]

GrInYa

не помогло...но стало чаще дисконектить

Sky_

Попробуй удалить процедуру WZ_DISCONNECT_MEMB и выполнить данный скрипт..
USE [MuOnline]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[WZ_DISCONNECT_MEMB]
@memb___id varchar(10)
AS
Begin
set nocount on
Declare @find_id varchar(10)
Declare @ConnectStat tinyint
Set @ConnectStat = 0
Set @find_id = 'NOT'
select @find_id = S.memb___id from MEMB_STAT S INNER JOIN MEMB_INFO I ON S.memb___id = I.memb___id collate Chinese_PRC_CI_AS
where I.memb___id = @memb___id collate Chinese_PRC_CI_AS

if( @find_id <> 'NOT' )
begin
update MEMB_STAT set ConnectStat = @ConnectStat, DisConnectTM = getdate()
where memb___id = @memb___id
end
end

Imp0ssible

Не мучайте парня, дело не в процедурах.

InsurgenT

мм и вообще не в базе...
Спойлер
[свернуть]

GrInYa

а во что тогда ?
Спойлер
[свернуть]
Спойлер
[свернуть]

Sky_

да нет, судя по ошибке - в базах, у меня както давно была такая же проблема, везде искал, и нашол именно в базе и вроде в процедурах..

ShoT

Перебей винду...Я избавлялся от етого так!

ShoT

У меня были ети еррор  прогнал на вируса комп перебил винду и все норм!Попробуй

muca11

Server: Msg 446, Level 16, State 9, Procedure WZ_CONNECT_MEMB, Line 61
Cannot resolve collation conflict for equal to operation.
ппц ( чё за хрень

Похожие темы (5)