Bonjour,
Situation : 2 serveurs A et B W2000 SQL2000SP3.
J'ai un comportement bizarre avec une fonction sur le serveur A qui ramène
une info du serveur distant B.
Voilà la fonction sur le serveur A :
CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
RETURNS VARCHAR(750)
AS
BEGIN
DECLARE @AlphaNumericCol VARCHAR(750)
SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable
WHERE Client_ID = @Client_Id AND Type_id='26')
RETURN @AlphaNumericCol
END
Quand j'exécute sur le serveur A :
select dbo.ft_SIRET('18750003800489'), la requête met 1min30
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Alors que si j'exécute directement la requête dans l'analyseur sur le
serveurA :
SELECT AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable
WHERE Client_ID = '18750003800489'AND Type_id='26'
La requête prend moins d' 1 seconde.............
Autre test, si je mets en dur dans la fonction, le client_Id :
ALTER FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
RETURNS VARCHAR(750)
AS
BEGIN
DECLARE @AlphaNumericCol VARCHAR(750)
SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable
WHERE Client_ID = '18750003800489' AND Type_id='26')
RETURN @AlphaNumericCol
END
Ce coup-ci, select dbo.ft_SIRET('18750003800489'), prend 1 seconde !
Je ne comprends pas ce qui peut se passer et pourquoi autant d'écart de perf
!!!! :o((
Quelqu'un peut-il m'éclairer ?
Bonjour,
Situation : 2 serveurs A et B W2000 SQL2000SP3.
J'ai un comportement bizarre avec une fonction sur le serveur A qui ramène
une info du serveur distant B.
Voilà la fonction sur le serveur A :
CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
RETURNS VARCHAR(750)
AS
BEGIN
DECLARE @AlphaNumericCol VARCHAR(750)
SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable
WHERE Client_ID = @Client_Id AND Type_id='26')
RETURN @AlphaNumericCol
END
Quand j'exécute sur le serveur A :
select dbo.ft_SIRET('18750003800489'), la requête met 1min30
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Alors que si j'exécute directement la requête dans l'analyseur sur le
serveurA :
SELECT AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable
WHERE Client_ID = '18750003800489'AND Type_id='26'
La requête prend moins d' 1 seconde.............
Autre test, si je mets en dur dans la fonction, le client_Id :
ALTER FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
RETURNS VARCHAR(750)
AS
BEGIN
DECLARE @AlphaNumericCol VARCHAR(750)
SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable
WHERE Client_ID = '18750003800489' AND Type_id='26')
RETURN @AlphaNumericCol
END
Ce coup-ci, select dbo.ft_SIRET('18750003800489'), prend 1 seconde !
Je ne comprends pas ce qui peut se passer et pourquoi autant d'écart de perf
!!!! :o((
Quelqu'un peut-il m'éclairer ?
Bonjour,
Situation : 2 serveurs A et B W2000 SQL2000SP3.
J'ai un comportement bizarre avec une fonction sur le serveur A qui ramène
une info du serveur distant B.
Voilà la fonction sur le serveur A :
CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
RETURNS VARCHAR(750)
AS
BEGIN
DECLARE @AlphaNumericCol VARCHAR(750)
SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable
WHERE Client_ID = @Client_Id AND Type_id='26')
RETURN @AlphaNumericCol
END
Quand j'exécute sur le serveur A :
select dbo.ft_SIRET('18750003800489'), la requête met 1min30
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Alors que si j'exécute directement la requête dans l'analyseur sur le
serveurA :
SELECT AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable
WHERE Client_ID = '18750003800489'AND Type_id='26'
La requête prend moins d' 1 seconde.............
Autre test, si je mets en dur dans la fonction, le client_Id :
ALTER FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
RETURNS VARCHAR(750)
AS
BEGIN
DECLARE @AlphaNumericCol VARCHAR(750)
SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable
WHERE Client_ID = '18750003800489' AND Type_id='26')
RETURN @AlphaNumericCol
END
Ce coup-ci, select dbo.ft_SIRET('18750003800489'), prend 1 seconde !
Je ne comprends pas ce qui peut se passer et pourquoi autant d'écart de perf
!!!! :o((
Quelqu'un peut-il m'éclairer ?
Essayez :
CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
RETURNS VARCHAR(750)
AS
BEGIN
IF @Client_Id IS NULL RETURN NULL
DECLARE @AlphaNumericCol VARCHAR(750)
SELECT @AlphaNumericCol = AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable T
WHERE T.Client_ID = @Client_Id
AND T.Type_id = '26'
RETURN @AlphaNumericCol
END
êtes vous sur du type VARCHAR(750) dans la définition de la colonne
AlphaNumericCol de la table ServeurB.LaBase.dbo.LaTable ?
Sinon cela force un transtypage implicite...
A +
Toff a écrit:
> Bonjour,
>
> Situation : 2 serveurs A et B W2000 SQL2000SP3.
>
> J'ai un comportement bizarre avec une fonction sur le serveur A qui
> une info du serveur distant B.
>
> Voilà la fonction sur le serveur A :
>
> CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
> RETURNS VARCHAR(750)
> AS
> BEGIN
>
> DECLARE @AlphaNumericCol VARCHAR(750)
>
> SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
> FROM ServeurB.LaBase.dbo.LaTable
> WHERE Client_ID = @Client_Id AND Type_id='26')
>
> RETURN @AlphaNumericCol
>
> END
>
> Quand j'exécute sur le serveur A :
> select dbo.ft_SIRET('18750003800489'), la requête met 1min30
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>
> Alors que si j'exécute directement la requête dans l'analyseur sur le
> serveurA :
> SELECT AlphaNumericCol
> FROM ServeurB.LaBase.dbo.LaTable
> WHERE Client_ID = '18750003800489'AND Type_id='26'
> La requête prend moins d' 1 seconde.............
>
>
>
> Autre test, si je mets en dur dans la fonction, le client_Id :
>
> ALTER FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
> RETURNS VARCHAR(750)
> AS
> BEGIN
>
> DECLARE @AlphaNumericCol VARCHAR(750)
>
> SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
> FROM ServeurB.LaBase.dbo.LaTable
> WHERE Client_ID = '18750003800489' AND Type_id='26')
>
> RETURN @AlphaNumericCol
>
> END
>
>
> Ce coup-ci, select dbo.ft_SIRET('18750003800489'), prend 1 seconde !
>
> Je ne comprends pas ce qui peut se passer et pourquoi autant d'écart de
> !!!! :o((
>
> Quelqu'un peut-il m'éclairer ?
>
>
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Essayez :
CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
RETURNS VARCHAR(750)
AS
BEGIN
IF @Client_Id IS NULL RETURN NULL
DECLARE @AlphaNumericCol VARCHAR(750)
SELECT @AlphaNumericCol = AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable T
WHERE T.Client_ID = @Client_Id
AND T.Type_id = '26'
RETURN @AlphaNumericCol
END
êtes vous sur du type VARCHAR(750) dans la définition de la colonne
AlphaNumericCol de la table ServeurB.LaBase.dbo.LaTable ?
Sinon cela force un transtypage implicite...
A +
Toff a écrit:
> Bonjour,
>
> Situation : 2 serveurs A et B W2000 SQL2000SP3.
>
> J'ai un comportement bizarre avec une fonction sur le serveur A qui
> une info du serveur distant B.
>
> Voilà la fonction sur le serveur A :
>
> CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
> RETURNS VARCHAR(750)
> AS
> BEGIN
>
> DECLARE @AlphaNumericCol VARCHAR(750)
>
> SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
> FROM ServeurB.LaBase.dbo.LaTable
> WHERE Client_ID = @Client_Id AND Type_id='26')
>
> RETURN @AlphaNumericCol
>
> END
>
> Quand j'exécute sur le serveur A :
> select dbo.ft_SIRET('18750003800489'), la requête met 1min30
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>
> Alors que si j'exécute directement la requête dans l'analyseur sur le
> serveurA :
> SELECT AlphaNumericCol
> FROM ServeurB.LaBase.dbo.LaTable
> WHERE Client_ID = '18750003800489'AND Type_id='26'
> La requête prend moins d' 1 seconde.............
>
>
>
> Autre test, si je mets en dur dans la fonction, le client_Id :
>
> ALTER FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
> RETURNS VARCHAR(750)
> AS
> BEGIN
>
> DECLARE @AlphaNumericCol VARCHAR(750)
>
> SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
> FROM ServeurB.LaBase.dbo.LaTable
> WHERE Client_ID = '18750003800489' AND Type_id='26')
>
> RETURN @AlphaNumericCol
>
> END
>
>
> Ce coup-ci, select dbo.ft_SIRET('18750003800489'), prend 1 seconde !
>
> Je ne comprends pas ce qui peut se passer et pourquoi autant d'écart de
> !!!! :o((
>
> Quelqu'un peut-il m'éclairer ?
>
>
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Essayez :
CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
RETURNS VARCHAR(750)
AS
BEGIN
IF @Client_Id IS NULL RETURN NULL
DECLARE @AlphaNumericCol VARCHAR(750)
SELECT @AlphaNumericCol = AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable T
WHERE T.Client_ID = @Client_Id
AND T.Type_id = '26'
RETURN @AlphaNumericCol
END
êtes vous sur du type VARCHAR(750) dans la définition de la colonne
AlphaNumericCol de la table ServeurB.LaBase.dbo.LaTable ?
Sinon cela force un transtypage implicite...
A +
Toff a écrit:
> Bonjour,
>
> Situation : 2 serveurs A et B W2000 SQL2000SP3.
>
> J'ai un comportement bizarre avec une fonction sur le serveur A qui
> une info du serveur distant B.
>
> Voilà la fonction sur le serveur A :
>
> CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
> RETURNS VARCHAR(750)
> AS
> BEGIN
>
> DECLARE @AlphaNumericCol VARCHAR(750)
>
> SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
> FROM ServeurB.LaBase.dbo.LaTable
> WHERE Client_ID = @Client_Id AND Type_id='26')
>
> RETURN @AlphaNumericCol
>
> END
>
> Quand j'exécute sur le serveur A :
> select dbo.ft_SIRET('18750003800489'), la requête met 1min30
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>
> Alors que si j'exécute directement la requête dans l'analyseur sur le
> serveurA :
> SELECT AlphaNumericCol
> FROM ServeurB.LaBase.dbo.LaTable
> WHERE Client_ID = '18750003800489'AND Type_id='26'
> La requête prend moins d' 1 seconde.............
>
>
>
> Autre test, si je mets en dur dans la fonction, le client_Id :
>
> ALTER FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
> RETURNS VARCHAR(750)
> AS
> BEGIN
>
> DECLARE @AlphaNumericCol VARCHAR(750)
>
> SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
> FROM ServeurB.LaBase.dbo.LaTable
> WHERE Client_ID = '18750003800489' AND Type_id='26')
>
> RETURN @AlphaNumericCol
>
> END
>
>
> Ce coup-ci, select dbo.ft_SIRET('18750003800489'), prend 1 seconde !
>
> Je ne comprends pas ce qui peut se passer et pourquoi autant d'écart de
> !!!! :o((
>
> Quelqu'un peut-il m'éclairer ?
>
>
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Merci de votre réponse mais cela ne change rien...
Je suis sûr du type VARCHAR(750) de la colonne.
Par contre, la même fonction créée sur une autre instance du serveur A
fonctionne correctement...
J'en perds mon latin ! :o(
Sur les 2 instances, le serveur lié distant est défini de la même manière,
avec le même mappage d'identité....
"Fred BROUARD" a écrit dans le message de
news:Essayez :
CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
RETURNS VARCHAR(750)
AS
BEGIN
IF @Client_Id IS NULL RETURN NULL
DECLARE @AlphaNumericCol VARCHAR(750)
SELECT @AlphaNumericCol = AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable T
WHERE T.Client_ID = @Client_Id
AND T.Type_id = '26'
RETURN @AlphaNumericCol
END
êtes vous sur du type VARCHAR(750) dans la définition de la colonne
AlphaNumericCol de la table ServeurB.LaBase.dbo.LaTable ?
Sinon cela force un transtypage implicite...
A +
Toff a écrit:
> Bonjour,
>
> Situation : 2 serveurs A et B W2000 SQL2000SP3.
>
> J'ai un comportement bizarre avec une fonction sur le serveur A qui
ramène> une info du serveur distant B.
>
> Voilà la fonction sur le serveur A :
>
> CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
> RETURNS VARCHAR(750)
> AS
> BEGIN
>
> DECLARE @AlphaNumericCol VARCHAR(750)
>
> SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
> FROM ServeurB.LaBase.dbo.LaTable
> WHERE Client_ID = @Client_Id AND Type_id='26')
>
> RETURN @AlphaNumericCol
>
> END
>
> Quand j'exécute sur le serveur A :
> select dbo.ft_SIRET('18750003800489'), la requête met 1min30
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>
> Alors que si j'exécute directement la requête dans l'analyseur sur le
> serveurA :
> SELECT AlphaNumericCol
> FROM ServeurB.LaBase.dbo.LaTable
> WHERE Client_ID = '18750003800489'AND Type_id='26'
> La requête prend moins d' 1 seconde.............
>
>
>
> Autre test, si je mets en dur dans la fonction, le client_Id :
>
> ALTER FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
> RETURNS VARCHAR(750)
> AS
> BEGIN
>
> DECLARE @AlphaNumericCol VARCHAR(750)
>
> SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
> FROM ServeurB.LaBase.dbo.LaTable
> WHERE Client_ID = '18750003800489' AND Type_id='26')
>
> RETURN @AlphaNumericCol
>
> END
>
>
> Ce coup-ci, select dbo.ft_SIRET('18750003800489'), prend 1 seconde !
>
> Je ne comprends pas ce qui peut se passer et pourquoi autant d'écart de
perf> !!!! :o((
>
> Quelqu'un peut-il m'éclairer ?
>
>
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Merci de votre réponse mais cela ne change rien...
Je suis sûr du type VARCHAR(750) de la colonne.
Par contre, la même fonction créée sur une autre instance du serveur A
fonctionne correctement...
J'en perds mon latin ! :o(
Sur les 2 instances, le serveur lié distant est défini de la même manière,
avec le même mappage d'identité....
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
news:OILsjyERGHA.2536@tk2msftngp13.phx.gbl...
Essayez :
CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
RETURNS VARCHAR(750)
AS
BEGIN
IF @Client_Id IS NULL RETURN NULL
DECLARE @AlphaNumericCol VARCHAR(750)
SELECT @AlphaNumericCol = AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable T
WHERE T.Client_ID = @Client_Id
AND T.Type_id = '26'
RETURN @AlphaNumericCol
END
êtes vous sur du type VARCHAR(750) dans la définition de la colonne
AlphaNumericCol de la table ServeurB.LaBase.dbo.LaTable ?
Sinon cela force un transtypage implicite...
A +
Toff a écrit:
> Bonjour,
>
> Situation : 2 serveurs A et B W2000 SQL2000SP3.
>
> J'ai un comportement bizarre avec une fonction sur le serveur A qui
ramène
> une info du serveur distant B.
>
> Voilà la fonction sur le serveur A :
>
> CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
> RETURNS VARCHAR(750)
> AS
> BEGIN
>
> DECLARE @AlphaNumericCol VARCHAR(750)
>
> SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
> FROM ServeurB.LaBase.dbo.LaTable
> WHERE Client_ID = @Client_Id AND Type_id='26')
>
> RETURN @AlphaNumericCol
>
> END
>
> Quand j'exécute sur le serveur A :
> select dbo.ft_SIRET('18750003800489'), la requête met 1min30
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>
> Alors que si j'exécute directement la requête dans l'analyseur sur le
> serveurA :
> SELECT AlphaNumericCol
> FROM ServeurB.LaBase.dbo.LaTable
> WHERE Client_ID = '18750003800489'AND Type_id='26'
> La requête prend moins d' 1 seconde.............
>
>
>
> Autre test, si je mets en dur dans la fonction, le client_Id :
>
> ALTER FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
> RETURNS VARCHAR(750)
> AS
> BEGIN
>
> DECLARE @AlphaNumericCol VARCHAR(750)
>
> SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
> FROM ServeurB.LaBase.dbo.LaTable
> WHERE Client_ID = '18750003800489' AND Type_id='26')
>
> RETURN @AlphaNumericCol
>
> END
>
>
> Ce coup-ci, select dbo.ft_SIRET('18750003800489'), prend 1 seconde !
>
> Je ne comprends pas ce qui peut se passer et pourquoi autant d'écart de
perf
> !!!! :o((
>
> Quelqu'un peut-il m'éclairer ?
>
>
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Merci de votre réponse mais cela ne change rien...
Je suis sûr du type VARCHAR(750) de la colonne.
Par contre, la même fonction créée sur une autre instance du serveur A
fonctionne correctement...
J'en perds mon latin ! :o(
Sur les 2 instances, le serveur lié distant est défini de la même manière,
avec le même mappage d'identité....
"Fred BROUARD" a écrit dans le message de
news:Essayez :
CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
RETURNS VARCHAR(750)
AS
BEGIN
IF @Client_Id IS NULL RETURN NULL
DECLARE @AlphaNumericCol VARCHAR(750)
SELECT @AlphaNumericCol = AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable T
WHERE T.Client_ID = @Client_Id
AND T.Type_id = '26'
RETURN @AlphaNumericCol
END
êtes vous sur du type VARCHAR(750) dans la définition de la colonne
AlphaNumericCol de la table ServeurB.LaBase.dbo.LaTable ?
Sinon cela force un transtypage implicite...
A +
Toff a écrit:
> Bonjour,
>
> Situation : 2 serveurs A et B W2000 SQL2000SP3.
>
> J'ai un comportement bizarre avec une fonction sur le serveur A qui
ramène> une info du serveur distant B.
>
> Voilà la fonction sur le serveur A :
>
> CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
> RETURNS VARCHAR(750)
> AS
> BEGIN
>
> DECLARE @AlphaNumericCol VARCHAR(750)
>
> SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
> FROM ServeurB.LaBase.dbo.LaTable
> WHERE Client_ID = @Client_Id AND Type_id='26')
>
> RETURN @AlphaNumericCol
>
> END
>
> Quand j'exécute sur le serveur A :
> select dbo.ft_SIRET('18750003800489'), la requête met 1min30
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>
> Alors que si j'exécute directement la requête dans l'analyseur sur le
> serveurA :
> SELECT AlphaNumericCol
> FROM ServeurB.LaBase.dbo.LaTable
> WHERE Client_ID = '18750003800489'AND Type_id='26'
> La requête prend moins d' 1 seconde.............
>
>
>
> Autre test, si je mets en dur dans la fonction, le client_Id :
>
> ALTER FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
> RETURNS VARCHAR(750)
> AS
> BEGIN
>
> DECLARE @AlphaNumericCol VARCHAR(750)
>
> SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
> FROM ServeurB.LaBase.dbo.LaTable
> WHERE Client_ID = '18750003800489' AND Type_id='26')
>
> RETURN @AlphaNumericCol
>
> END
>
>
> Ce coup-ci, select dbo.ft_SIRET('18750003800489'), prend 1 seconde !
>
> Je ne comprends pas ce qui peut se passer et pourquoi autant d'écart de
perf> !!!! :o((
>
> Quelqu'un peut-il m'éclairer ?
>
>
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Bonjour,
Utilisez vous le même compte entre vos deux instances ? Etes-vous en
sécurité intégrés ?
----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France
"Toff" <redtech(enlever cette parenthèse)@free.fr> wrote in message
news:%
> Merci de votre réponse mais cela ne change rien...
> Je suis sûr du type VARCHAR(750) de la colonne.
>
> Par contre, la même fonction créée sur une autre instance du serveur A
> fonctionne correctement...
>
> J'en perds mon latin ! :o(
>
> Sur les 2 instances, le serveur lié distant est défini de la même
> avec le même mappage d'identité....
>
>
> "Fred BROUARD" a écrit dans le message de
> news:
>> Essayez :
>>
>>
>> CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
>> RETURNS VARCHAR(750)
>> AS
>> BEGIN
>>
>> IF @Client_Id IS NULL RETURN NULL
>>
>> DECLARE @AlphaNumericCol VARCHAR(750)
>>
>> SELECT @AlphaNumericCol = AlphaNumericCol
>> FROM ServeurB.LaBase.dbo.LaTable T
>> WHERE T.Client_ID = @Client_Id
>> AND T.Type_id = '26'
>>
>> RETURN @AlphaNumericCol
>>
>> END
>>
>>
>> êtes vous sur du type VARCHAR(750) dans la définition de la colonne
>> AlphaNumericCol de la table ServeurB.LaBase.dbo.LaTable ?
>> Sinon cela force un transtypage implicite...
>>
>> A +
>>
>> Toff a écrit:
>> > Bonjour,
>> >
>> > Situation : 2 serveurs A et B W2000 SQL2000SP3.
>> >
>> > J'ai un comportement bizarre avec une fonction sur le serveur A qui
> ramène
>> > une info du serveur distant B.
>> >
>> > Voilà la fonction sur le serveur A :
>> >
>> > CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
>> > RETURNS VARCHAR(750)
>> > AS
>> > BEGIN
>> >
>> > DECLARE @AlphaNumericCol VARCHAR(750)
>> >
>> > SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
>> > FROM ServeurB.LaBase.dbo.LaTable
>> > WHERE Client_ID = @Client_Id AND Type_id='26')
>> >
>> > RETURN @AlphaNumericCol
>> >
>> > END
>> >
>> > Quand j'exécute sur le serveur A :
>> > select dbo.ft_SIRET('18750003800489'), la requête met 1min30
>> > !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>> >
>> > Alors que si j'exécute directement la requête dans l'analyseur sur le
>> > serveurA :
>> > SELECT AlphaNumericCol
>> > FROM ServeurB.LaBase.dbo.LaTable
>> > WHERE Client_ID = '18750003800489'AND Type_id='26'
>> > La requête prend moins d' 1 seconde.............
>> >
>> >
>> >
>> > Autre test, si je mets en dur dans la fonction, le client_Id :
>> >
>> > ALTER FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
>> > RETURNS VARCHAR(750)
>> > AS
>> > BEGIN
>> >
>> > DECLARE @AlphaNumericCol VARCHAR(750)
>> >
>> > SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
>> > FROM ServeurB.LaBase.dbo.LaTable
>> > WHERE Client_ID = '18750003800489' AND Type_id='26')
>> >
>> > RETURN @AlphaNumericCol
>> >
>> > END
>> >
>> >
>> > Ce coup-ci, select dbo.ft_SIRET('18750003800489'), prend 1 seconde !
>> >
>> > Je ne comprends pas ce qui peut se passer et pourquoi autant d'écart
> perf
>> > !!!! :o((
>> >
>> > Quelqu'un peut-il m'éclairer ?
>> >
>> >
>>
>> --
>> Frédéric BROUARD, MVP SQL Server, expert bases de données et langage
>> Le site sur le langage SQL et les SGBDR :
>> Audit, conseil, expertise, formation, modélisation, tuning,
>> ********************* http://www.datasapiens.com
>>
>
>
Bonjour,
Utilisez vous le même compte entre vos deux instances ? Etes-vous en
sécurité intégrés ?
----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France
"Toff" <redtech(enlever cette parenthèse)@free.fr> wrote in message
news:%23mmZJsFRGHA.5296@tk2msftngp13.phx.gbl...
> Merci de votre réponse mais cela ne change rien...
> Je suis sûr du type VARCHAR(750) de la colonne.
>
> Par contre, la même fonction créée sur une autre instance du serveur A
> fonctionne correctement...
>
> J'en perds mon latin ! :o(
>
> Sur les 2 instances, le serveur lié distant est défini de la même
> avec le même mappage d'identité....
>
>
> "Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
> news:OILsjyERGHA.2536@tk2msftngp13.phx.gbl...
>> Essayez :
>>
>>
>> CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
>> RETURNS VARCHAR(750)
>> AS
>> BEGIN
>>
>> IF @Client_Id IS NULL RETURN NULL
>>
>> DECLARE @AlphaNumericCol VARCHAR(750)
>>
>> SELECT @AlphaNumericCol = AlphaNumericCol
>> FROM ServeurB.LaBase.dbo.LaTable T
>> WHERE T.Client_ID = @Client_Id
>> AND T.Type_id = '26'
>>
>> RETURN @AlphaNumericCol
>>
>> END
>>
>>
>> êtes vous sur du type VARCHAR(750) dans la définition de la colonne
>> AlphaNumericCol de la table ServeurB.LaBase.dbo.LaTable ?
>> Sinon cela force un transtypage implicite...
>>
>> A +
>>
>> Toff a écrit:
>> > Bonjour,
>> >
>> > Situation : 2 serveurs A et B W2000 SQL2000SP3.
>> >
>> > J'ai un comportement bizarre avec une fonction sur le serveur A qui
> ramène
>> > une info du serveur distant B.
>> >
>> > Voilà la fonction sur le serveur A :
>> >
>> > CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
>> > RETURNS VARCHAR(750)
>> > AS
>> > BEGIN
>> >
>> > DECLARE @AlphaNumericCol VARCHAR(750)
>> >
>> > SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
>> > FROM ServeurB.LaBase.dbo.LaTable
>> > WHERE Client_ID = @Client_Id AND Type_id='26')
>> >
>> > RETURN @AlphaNumericCol
>> >
>> > END
>> >
>> > Quand j'exécute sur le serveur A :
>> > select dbo.ft_SIRET('18750003800489'), la requête met 1min30
>> > !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>> >
>> > Alors que si j'exécute directement la requête dans l'analyseur sur le
>> > serveurA :
>> > SELECT AlphaNumericCol
>> > FROM ServeurB.LaBase.dbo.LaTable
>> > WHERE Client_ID = '18750003800489'AND Type_id='26'
>> > La requête prend moins d' 1 seconde.............
>> >
>> >
>> >
>> > Autre test, si je mets en dur dans la fonction, le client_Id :
>> >
>> > ALTER FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
>> > RETURNS VARCHAR(750)
>> > AS
>> > BEGIN
>> >
>> > DECLARE @AlphaNumericCol VARCHAR(750)
>> >
>> > SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
>> > FROM ServeurB.LaBase.dbo.LaTable
>> > WHERE Client_ID = '18750003800489' AND Type_id='26')
>> >
>> > RETURN @AlphaNumericCol
>> >
>> > END
>> >
>> >
>> > Ce coup-ci, select dbo.ft_SIRET('18750003800489'), prend 1 seconde !
>> >
>> > Je ne comprends pas ce qui peut se passer et pourquoi autant d'écart
> perf
>> > !!!! :o((
>> >
>> > Quelqu'un peut-il m'éclairer ?
>> >
>> >
>>
>> --
>> Frédéric BROUARD, MVP SQL Server, expert bases de données et langage
>> Le site sur le langage SQL et les SGBDR :
>> Audit, conseil, expertise, formation, modélisation, tuning,
>> ********************* http://www.datasapiens.com
>>
>
>
Bonjour,
Utilisez vous le même compte entre vos deux instances ? Etes-vous en
sécurité intégrés ?
----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France
"Toff" <redtech(enlever cette parenthèse)@free.fr> wrote in message
news:%
> Merci de votre réponse mais cela ne change rien...
> Je suis sûr du type VARCHAR(750) de la colonne.
>
> Par contre, la même fonction créée sur une autre instance du serveur A
> fonctionne correctement...
>
> J'en perds mon latin ! :o(
>
> Sur les 2 instances, le serveur lié distant est défini de la même
> avec le même mappage d'identité....
>
>
> "Fred BROUARD" a écrit dans le message de
> news:
>> Essayez :
>>
>>
>> CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
>> RETURNS VARCHAR(750)
>> AS
>> BEGIN
>>
>> IF @Client_Id IS NULL RETURN NULL
>>
>> DECLARE @AlphaNumericCol VARCHAR(750)
>>
>> SELECT @AlphaNumericCol = AlphaNumericCol
>> FROM ServeurB.LaBase.dbo.LaTable T
>> WHERE T.Client_ID = @Client_Id
>> AND T.Type_id = '26'
>>
>> RETURN @AlphaNumericCol
>>
>> END
>>
>>
>> êtes vous sur du type VARCHAR(750) dans la définition de la colonne
>> AlphaNumericCol de la table ServeurB.LaBase.dbo.LaTable ?
>> Sinon cela force un transtypage implicite...
>>
>> A +
>>
>> Toff a écrit:
>> > Bonjour,
>> >
>> > Situation : 2 serveurs A et B W2000 SQL2000SP3.
>> >
>> > J'ai un comportement bizarre avec une fonction sur le serveur A qui
> ramène
>> > une info du serveur distant B.
>> >
>> > Voilà la fonction sur le serveur A :
>> >
>> > CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
>> > RETURNS VARCHAR(750)
>> > AS
>> > BEGIN
>> >
>> > DECLARE @AlphaNumericCol VARCHAR(750)
>> >
>> > SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
>> > FROM ServeurB.LaBase.dbo.LaTable
>> > WHERE Client_ID = @Client_Id AND Type_id='26')
>> >
>> > RETURN @AlphaNumericCol
>> >
>> > END
>> >
>> > Quand j'exécute sur le serveur A :
>> > select dbo.ft_SIRET('18750003800489'), la requête met 1min30
>> > !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>> >
>> > Alors que si j'exécute directement la requête dans l'analyseur sur le
>> > serveurA :
>> > SELECT AlphaNumericCol
>> > FROM ServeurB.LaBase.dbo.LaTable
>> > WHERE Client_ID = '18750003800489'AND Type_id='26'
>> > La requête prend moins d' 1 seconde.............
>> >
>> >
>> >
>> > Autre test, si je mets en dur dans la fonction, le client_Id :
>> >
>> > ALTER FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
>> > RETURNS VARCHAR(750)
>> > AS
>> > BEGIN
>> >
>> > DECLARE @AlphaNumericCol VARCHAR(750)
>> >
>> > SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
>> > FROM ServeurB.LaBase.dbo.LaTable
>> > WHERE Client_ID = '18750003800489' AND Type_id='26')
>> >
>> > RETURN @AlphaNumericCol
>> >
>> > END
>> >
>> >
>> > Ce coup-ci, select dbo.ft_SIRET('18750003800489'), prend 1 seconde !
>> >
>> > Je ne comprends pas ce qui peut se passer et pourquoi autant d'écart
> perf
>> > !!!! :o((
>> >
>> > Quelqu'un peut-il m'éclairer ?
>> >
>> >
>>
>> --
>> Frédéric BROUARD, MVP SQL Server, expert bases de données et langage
>> Le site sur le langage SQL et les SGBDR :
>> Audit, conseil, expertise, formation, modélisation, tuning,
>> ********************* http://www.datasapiens.com
>>
>
>
Oui, même compte, sécu intégrée sur les deux instances...
"Philippe T [MS]" a écrit dans le message
de
news:%Bonjour,
Utilisez vous le même compte entre vos deux instances ? Etes-vous en
sécurité intégrés ?
----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France
"Toff" <redtech(enlever cette parenthèse)@free.fr> wrote in message
news:%
> Merci de votre réponse mais cela ne change rien...
> Je suis sûr du type VARCHAR(750) de la colonne.
>
> Par contre, la même fonction créée sur une autre instance du serveur A
> fonctionne correctement...
>
> J'en perds mon latin ! :o(
>
> Sur les 2 instances, le serveur lié distant est défini de la même
manière,> avec le même mappage d'identité....
>
>
> "Fred BROUARD" a écrit dans le message de
> news:
>> Essayez :
>>
>>
>> CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
>> RETURNS VARCHAR(750)
>> AS
>> BEGIN
>>
>> IF @Client_Id IS NULL RETURN NULL
>>
>> DECLARE @AlphaNumericCol VARCHAR(750)
>>
>> SELECT @AlphaNumericCol = AlphaNumericCol
>> FROM ServeurB.LaBase.dbo.LaTable T
>> WHERE T.Client_ID = @Client_Id
>> AND T.Type_id = '26'
>>
>> RETURN @AlphaNumericCol
>>
>> END
>>
>>
>> êtes vous sur du type VARCHAR(750) dans la définition de la colonne
>> AlphaNumericCol de la table ServeurB.LaBase.dbo.LaTable ?
>> Sinon cela force un transtypage implicite...
>>
>> A +
>>
>> Toff a écrit:
>> > Bonjour,
>> >
>> > Situation : 2 serveurs A et B W2000 SQL2000SP3.
>> >
>> > J'ai un comportement bizarre avec une fonction sur le serveur A qui
> ramène
>> > une info du serveur distant B.
>> >
>> > Voilà la fonction sur le serveur A :
>> >
>> > CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
>> > RETURNS VARCHAR(750)
>> > AS
>> > BEGIN
>> >
>> > DECLARE @AlphaNumericCol VARCHAR(750)
>> >
>> > SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
>> > FROM ServeurB.LaBase.dbo.LaTable
>> > WHERE Client_ID = @Client_Id AND Type_id='26')
>> >
>> > RETURN @AlphaNumericCol
>> >
>> > END
>> >
>> > Quand j'exécute sur le serveur A :
>> > select dbo.ft_SIRET('18750003800489'), la requête met 1min30
>> > !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>> >
>> > Alors que si j'exécute directement la requête dans l'analyseur sur
>> > le
>> > serveurA :
>> > SELECT AlphaNumericCol
>> > FROM ServeurB.LaBase.dbo.LaTable
>> > WHERE Client_ID = '18750003800489'AND Type_id='26'
>> > La requête prend moins d' 1 seconde.............
>> >
>> >
>> >
>> > Autre test, si je mets en dur dans la fonction, le client_Id :
>> >
>> > ALTER FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
>> > RETURNS VARCHAR(750)
>> > AS
>> > BEGIN
>> >
>> > DECLARE @AlphaNumericCol VARCHAR(750)
>> >
>> > SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
>> > FROM ServeurB.LaBase.dbo.LaTable
>> > WHERE Client_ID = '18750003800489' AND Type_id='26')
>> >
>> > RETURN @AlphaNumericCol
>> >
>> > END
>> >
>> >
>> > Ce coup-ci, select dbo.ft_SIRET('18750003800489'), prend 1 seconde !
>> >
>> > Je ne comprends pas ce qui peut se passer et pourquoi autant d'écart
de> perf
>> > !!!! :o((
>> >
>> > Quelqu'un peut-il m'éclairer ?
>> >
>> >
>>
>> --
>> Frédéric BROUARD, MVP SQL Server, expert bases de données et langage
SQL>> Le site sur le langage SQL et les SGBDR :
http://sqlpro.developpez.com>> Audit, conseil, expertise, formation, modélisation, tuning,
optimisation>> ********************* http://www.datasapiens.com
***********************>>
>
>
Oui, même compte, sécu intégrée sur les deux instances...
"Philippe T [MS]" <ptrotin@online.microsoft.com> a écrit dans le message
de
news:%23SpfyoSRGHA.3972@TK2MSFTNGP10.phx.gbl...
Bonjour,
Utilisez vous le même compte entre vos deux instances ? Etes-vous en
sécurité intégrés ?
----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France
"Toff" <redtech(enlever cette parenthèse)@free.fr> wrote in message
news:%23mmZJsFRGHA.5296@tk2msftngp13.phx.gbl...
> Merci de votre réponse mais cela ne change rien...
> Je suis sûr du type VARCHAR(750) de la colonne.
>
> Par contre, la même fonction créée sur une autre instance du serveur A
> fonctionne correctement...
>
> J'en perds mon latin ! :o(
>
> Sur les 2 instances, le serveur lié distant est défini de la même
manière,
> avec le même mappage d'identité....
>
>
> "Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
> news:OILsjyERGHA.2536@tk2msftngp13.phx.gbl...
>> Essayez :
>>
>>
>> CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
>> RETURNS VARCHAR(750)
>> AS
>> BEGIN
>>
>> IF @Client_Id IS NULL RETURN NULL
>>
>> DECLARE @AlphaNumericCol VARCHAR(750)
>>
>> SELECT @AlphaNumericCol = AlphaNumericCol
>> FROM ServeurB.LaBase.dbo.LaTable T
>> WHERE T.Client_ID = @Client_Id
>> AND T.Type_id = '26'
>>
>> RETURN @AlphaNumericCol
>>
>> END
>>
>>
>> êtes vous sur du type VARCHAR(750) dans la définition de la colonne
>> AlphaNumericCol de la table ServeurB.LaBase.dbo.LaTable ?
>> Sinon cela force un transtypage implicite...
>>
>> A +
>>
>> Toff a écrit:
>> > Bonjour,
>> >
>> > Situation : 2 serveurs A et B W2000 SQL2000SP3.
>> >
>> > J'ai un comportement bizarre avec une fonction sur le serveur A qui
> ramène
>> > une info du serveur distant B.
>> >
>> > Voilà la fonction sur le serveur A :
>> >
>> > CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
>> > RETURNS VARCHAR(750)
>> > AS
>> > BEGIN
>> >
>> > DECLARE @AlphaNumericCol VARCHAR(750)
>> >
>> > SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
>> > FROM ServeurB.LaBase.dbo.LaTable
>> > WHERE Client_ID = @Client_Id AND Type_id='26')
>> >
>> > RETURN @AlphaNumericCol
>> >
>> > END
>> >
>> > Quand j'exécute sur le serveur A :
>> > select dbo.ft_SIRET('18750003800489'), la requête met 1min30
>> > !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>> >
>> > Alors que si j'exécute directement la requête dans l'analyseur sur
>> > le
>> > serveurA :
>> > SELECT AlphaNumericCol
>> > FROM ServeurB.LaBase.dbo.LaTable
>> > WHERE Client_ID = '18750003800489'AND Type_id='26'
>> > La requête prend moins d' 1 seconde.............
>> >
>> >
>> >
>> > Autre test, si je mets en dur dans la fonction, le client_Id :
>> >
>> > ALTER FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
>> > RETURNS VARCHAR(750)
>> > AS
>> > BEGIN
>> >
>> > DECLARE @AlphaNumericCol VARCHAR(750)
>> >
>> > SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
>> > FROM ServeurB.LaBase.dbo.LaTable
>> > WHERE Client_ID = '18750003800489' AND Type_id='26')
>> >
>> > RETURN @AlphaNumericCol
>> >
>> > END
>> >
>> >
>> > Ce coup-ci, select dbo.ft_SIRET('18750003800489'), prend 1 seconde !
>> >
>> > Je ne comprends pas ce qui peut se passer et pourquoi autant d'écart
de
> perf
>> > !!!! :o((
>> >
>> > Quelqu'un peut-il m'éclairer ?
>> >
>> >
>>
>> --
>> Frédéric BROUARD, MVP SQL Server, expert bases de données et langage
SQL
>> Le site sur le langage SQL et les SGBDR :
http://sqlpro.developpez.com
>> Audit, conseil, expertise, formation, modélisation, tuning,
optimisation
>> ********************* http://www.datasapiens.com
***********************
>>
>
>
Oui, même compte, sécu intégrée sur les deux instances...
"Philippe T [MS]" a écrit dans le message
de
news:%Bonjour,
Utilisez vous le même compte entre vos deux instances ? Etes-vous en
sécurité intégrés ?
----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France
"Toff" <redtech(enlever cette parenthèse)@free.fr> wrote in message
news:%
> Merci de votre réponse mais cela ne change rien...
> Je suis sûr du type VARCHAR(750) de la colonne.
>
> Par contre, la même fonction créée sur une autre instance du serveur A
> fonctionne correctement...
>
> J'en perds mon latin ! :o(
>
> Sur les 2 instances, le serveur lié distant est défini de la même
manière,> avec le même mappage d'identité....
>
>
> "Fred BROUARD" a écrit dans le message de
> news:
>> Essayez :
>>
>>
>> CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
>> RETURNS VARCHAR(750)
>> AS
>> BEGIN
>>
>> IF @Client_Id IS NULL RETURN NULL
>>
>> DECLARE @AlphaNumericCol VARCHAR(750)
>>
>> SELECT @AlphaNumericCol = AlphaNumericCol
>> FROM ServeurB.LaBase.dbo.LaTable T
>> WHERE T.Client_ID = @Client_Id
>> AND T.Type_id = '26'
>>
>> RETURN @AlphaNumericCol
>>
>> END
>>
>>
>> êtes vous sur du type VARCHAR(750) dans la définition de la colonne
>> AlphaNumericCol de la table ServeurB.LaBase.dbo.LaTable ?
>> Sinon cela force un transtypage implicite...
>>
>> A +
>>
>> Toff a écrit:
>> > Bonjour,
>> >
>> > Situation : 2 serveurs A et B W2000 SQL2000SP3.
>> >
>> > J'ai un comportement bizarre avec une fonction sur le serveur A qui
> ramène
>> > une info du serveur distant B.
>> >
>> > Voilà la fonction sur le serveur A :
>> >
>> > CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
>> > RETURNS VARCHAR(750)
>> > AS
>> > BEGIN
>> >
>> > DECLARE @AlphaNumericCol VARCHAR(750)
>> >
>> > SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
>> > FROM ServeurB.LaBase.dbo.LaTable
>> > WHERE Client_ID = @Client_Id AND Type_id='26')
>> >
>> > RETURN @AlphaNumericCol
>> >
>> > END
>> >
>> > Quand j'exécute sur le serveur A :
>> > select dbo.ft_SIRET('18750003800489'), la requête met 1min30
>> > !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>> >
>> > Alors que si j'exécute directement la requête dans l'analyseur sur
>> > le
>> > serveurA :
>> > SELECT AlphaNumericCol
>> > FROM ServeurB.LaBase.dbo.LaTable
>> > WHERE Client_ID = '18750003800489'AND Type_id='26'
>> > La requête prend moins d' 1 seconde.............
>> >
>> >
>> >
>> > Autre test, si je mets en dur dans la fonction, le client_Id :
>> >
>> > ALTER FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
>> > RETURNS VARCHAR(750)
>> > AS
>> > BEGIN
>> >
>> > DECLARE @AlphaNumericCol VARCHAR(750)
>> >
>> > SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
>> > FROM ServeurB.LaBase.dbo.LaTable
>> > WHERE Client_ID = '18750003800489' AND Type_id='26')
>> >
>> > RETURN @AlphaNumericCol
>> >
>> > END
>> >
>> >
>> > Ce coup-ci, select dbo.ft_SIRET('18750003800489'), prend 1 seconde !
>> >
>> > Je ne comprends pas ce qui peut se passer et pourquoi autant d'écart
de> perf
>> > !!!! :o((
>> >
>> > Quelqu'un peut-il m'éclairer ?
>> >
>> >
>>
>> --
>> Frédéric BROUARD, MVP SQL Server, expert bases de données et langage
SQL>> Le site sur le langage SQL et les SGBDR :
http://sqlpro.developpez.com>> Audit, conseil, expertise, formation, modélisation, tuning,
optimisation>> ********************* http://www.datasapiens.com
***********************>>
>
>
Bonjour,
Situation : 2 serveurs A et B W2000 SQL2000SP3.
J'ai un comportement bizarre avec une fonction sur le serveur A qui ramène
une info du serveur distant B.
Voilà la fonction sur le serveur A :
CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
RETURNS VARCHAR(750)
AS
BEGIN
DECLARE @AlphaNumericCol VARCHAR(750)
SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable
WHERE Client_ID = @Client_Id AND Type_id='26')
RETURN @AlphaNumericCol
END
Quand j'exécute sur le serveur A :
select dbo.ft_SIRET('18750003800489'), la requête met 1min30
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Alors que si j'exécute directement la requête dans l'analyseur sur le
serveurA :
SELECT AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable
WHERE Client_ID = '18750003800489'AND Type_id='26'
La requête prend moins d' 1 seconde.............
Autre test, si je mets en dur dans la fonction, le client_Id :
ALTER FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
RETURNS VARCHAR(750)
AS
BEGIN
DECLARE @AlphaNumericCol VARCHAR(750)
SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable
WHERE Client_ID = '18750003800489' AND Type_id='26')
RETURN @AlphaNumericCol
END
Ce coup-ci, select dbo.ft_SIRET('18750003800489'), prend 1 seconde !
Je ne comprends pas ce qui peut se passer et pourquoi autant d'écart de
perf
!!!! :o((
Quelqu'un peut-il m'éclairer ?
Bonjour,
Situation : 2 serveurs A et B W2000 SQL2000SP3.
J'ai un comportement bizarre avec une fonction sur le serveur A qui ramène
une info du serveur distant B.
Voilà la fonction sur le serveur A :
CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
RETURNS VARCHAR(750)
AS
BEGIN
DECLARE @AlphaNumericCol VARCHAR(750)
SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable
WHERE Client_ID = @Client_Id AND Type_id='26')
RETURN @AlphaNumericCol
END
Quand j'exécute sur le serveur A :
select dbo.ft_SIRET('18750003800489'), la requête met 1min30
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Alors que si j'exécute directement la requête dans l'analyseur sur le
serveurA :
SELECT AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable
WHERE Client_ID = '18750003800489'AND Type_id='26'
La requête prend moins d' 1 seconde.............
Autre test, si je mets en dur dans la fonction, le client_Id :
ALTER FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
RETURNS VARCHAR(750)
AS
BEGIN
DECLARE @AlphaNumericCol VARCHAR(750)
SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable
WHERE Client_ID = '18750003800489' AND Type_id='26')
RETURN @AlphaNumericCol
END
Ce coup-ci, select dbo.ft_SIRET('18750003800489'), prend 1 seconde !
Je ne comprends pas ce qui peut se passer et pourquoi autant d'écart de
perf
!!!! :o((
Quelqu'un peut-il m'éclairer ?
Bonjour,
Situation : 2 serveurs A et B W2000 SQL2000SP3.
J'ai un comportement bizarre avec une fonction sur le serveur A qui ramène
une info du serveur distant B.
Voilà la fonction sur le serveur A :
CREATE FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
RETURNS VARCHAR(750)
AS
BEGIN
DECLARE @AlphaNumericCol VARCHAR(750)
SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable
WHERE Client_ID = @Client_Id AND Type_id='26')
RETURN @AlphaNumericCol
END
Quand j'exécute sur le serveur A :
select dbo.ft_SIRET('18750003800489'), la requête met 1min30
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Alors que si j'exécute directement la requête dans l'analyseur sur le
serveurA :
SELECT AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable
WHERE Client_ID = '18750003800489'AND Type_id='26'
La requête prend moins d' 1 seconde.............
Autre test, si je mets en dur dans la fonction, le client_Id :
ALTER FUNCTION ft_SIRET(@Client_Id VARCHAR(24))
RETURNS VARCHAR(750)
AS
BEGIN
DECLARE @AlphaNumericCol VARCHAR(750)
SELECT @AlphaNumericCol = (SELECT AlphaNumericCol
FROM ServeurB.LaBase.dbo.LaTable
WHERE Client_ID = '18750003800489' AND Type_id='26')
RETURN @AlphaNumericCol
END
Ce coup-ci, select dbo.ft_SIRET('18750003800489'), prend 1 seconde !
Je ne comprends pas ce qui peut se passer et pourquoi autant d'écart de
perf
!!!! :o((
Quelqu'un peut-il m'éclairer ?