Home Forums SQL Server 7,2000 T-SQL Error Message:Cannot open database requested in login ''databasename''. Login fails. RE: Error Message:Cannot open database requested in login ''''databasename''''. Login fails.

  • Hello,

     

    The below is the code.I am getting the above error while executing this.

    Just What i want is if the error comes then it will go to the next server and repeat the execution..

    Can any one help me and

    create PROCEDURE SP_Link 

    AS 

    DECLARE @IP VARCHAR(100)   

    DECLARE @Password VARCHAR(100)   

    DECLARE @DBName VARCHAR(100)   

    DECLARE @SQL_Password VARCHAR(100)   

    DECLARE @OSQL VARCHAR(100)   

    BEGIN 

     DECLARE CUR_FETCH1 CURSOR FOR SELECT SERVER_IP,SQL_PASSWORD,DB_NAME FROM RemoteInfo 

     OPEN CUR_FETCH1 

     FETCH NEXT FROM CUR_FETCH1 INTO @IP,@SQL_Password,@DBName 

     WHILE @@FETCH_STATUS=0 

     BEGIN 

      SET @OSQL='osql -S '+@IP +' -U sa -P '+@SQL_Password +' -d master -Q"SELECT Name FROM sysdatabases"'  

      IF EXISTS (SELECT * FROM SYSOBJECTS WHERE TYPE='U' AND NAME='DBases')   

      BEGIN 

       drop table DBases         

      END  --2   

      CREATE TABLE DBases    

      (    

          dbname SYSNAME NULL    

       );    

      INSERT  into DBases   

      EXEC master..xp_cmdshell @OSQL   

      IF EXISTS(SELECT 1 FROM DBases WHERE LTRIM(RTRIM(DbName))=N'master') 

      BEGIN 

       DECLARE @DROPSERVER VARCHAR(50) 

       DECLARE @DQUERY VARCHAR(800) 

       DECLARE @CNT INT 

       SET @DROPSERVER=('SP_DROPSERVER ''L_REMOTE'',''DROPLOGINS''') 

       IF EXISTS(SELECT * FROM MASTER.DBO.SYSSERVERS WHERE SRVNAME LIKE 'L_REMOTE') 

       EXEC(@DROPSERVER) 

       EXEC SP_ADDLINKEDSERVER 

       @SERVER='L_REMOTE', 

       @SRVPRODUCT='', 

       @PROVIDER='SQLOLEDB', 

       @CATALOG=@DBname, 

       @DATASRC=@IP 

       EXEC SP_ADDLINKEDSRVLOGIN 

       @RMTSRVNAME='L_REMOTE', 

       @USESELF='False', 

       @RMTUSER='sa', 

       @RMTPASSWORD=@SQL_Password 

       SET @DQUERY='' 

       IF @DBName LIKE '%crm%' 

       BEGIN 

        SET @DQUERY='SELECT MAX(RO)AS DATE FROM SERVICE WHERE RO BETWEEN GETDATE()-5 AND GETDATE()' 

       END 

       ELSE 

       BEGIN 

        SET @DQUERY='SELECT MAX(DEAL)AS DATE FROM PURCHASE WHERE DEAL BETWEEN GETDATE()-5 AND GETDATE()' 

       END 

                  

           IF EXISTS (SELECT * FROM TempDB..SYSOBJECTS WHERE TYPE='U' AND NAME='temp_data') 

                        BEGIN 

                            DROP TABLE TempDB..temp_data

          end

       SET @DQUERY='SELECT * INTO TEMPDB.DBO.temp_data FROM OPENQUERY(L_REMOTE,'''+@DQUERY+''')' 

       EXEC(@DQUERY) 

       SELECT * FROM TEMPDB.DBO.temp_data  

       SELECT @CNT=COUNT(*) FROM TEMPDB.DBO.temp_data  

       IF @CNT>=1 

       BEGIN 

        DECLARE @D_DATE VARCHAR(100) 

        DECLARE CUR_TEMPDATA CURSOR FOR SELECT * FROM TEMPDB.DBO.temp_data  

        OPEN CUR_TEMPDATA 

        FETCH CUR_TEMPDATA INTO @D_DATE 

        WHILE @@FETCH_STATUS=0 

        BEGIN 

         INSERT INTO Final_Data SELECT @D_DATE,@DBname 

         FETCH CUR_TEMPDATA INTO @D_DATE  

        END 

       END 

       CLOSE CUR_TEMPDATA 

       DEALLOCATE CUR_TEMPDATA 

      END  

      ELSE 

      BEGIN 

       PRINT 'No Connection To The Remote Server' 

      END 

      FETCH NEXT FROM CUR_FETCH1 INTO @IP,@SQL_Password,@DBName 

     END 

     

    END 

    CLOSE CUR_FETCH1 

    DEALLOCATE CUR_FETCH1