2012-11-28 24 views
5

ड्रॉप करता है हमारे पास 8.0.1.0 में सैकड़ों रिपोर्टें बनाई गई हैं (मुझे पता है कि वे पुराने हैं)।डेटाबेस स्थान बदलना स्वामी स्कीमा

हमने इन रिपोर्टों को चलाने के लिए एक विजुअल स्टूडियो 2010 सी # एप्लिकेशन बनाया है। यह एक विंडोज ऐप है। वेब ऐप के साथ कुछ परेशानी थी।

रिपोर्ट सभी प्रोड पर्यावरण के तहत सहेजी गई हैं।

हम एक परीक्षण वातावरण में काम कर रहे हैं।

हम ओरेकल पर्यावरण का उपयोग कर रहे हैं और सभी रिपोर्ट ओरेकल सर्वर कनेक्शन का उपयोग करती हैं।

जब हम सी # के माध्यम से रिपोर्ट चलाते हैं तो हम आगे बढ़ते हैं और सभी डेटाबेस स्थानों को हमारे टेस्ट पर्यावरण में बदल देते हैं। जब ऐसा होता है तो "मालिक" (स्कीमा) जानकारी गिरा दी जाती है। रिपोर्ट 9 42 त्रुटि के साथ विफल रहता है।

अब यदि हम डेटाबेस नहीं बदलते हैं, तो इसे प्रोड के रूप में रखें, सब कुछ पूरी तरह से काम करता है। ऐसा लगता है कि डेटाबेस को बदलकर स्कीमा जानकारी गिरा दी गई है।

कोई भी विचार। मैं चारों ओर खोज रहा हूं और समाधान नहीं ढूंढ रहा हूं। कोड की

स्निपेट:

connectionInfo.DatabaseName = ""; 
connectionInfo.ServerName = <SERVER>; 
connectionInfo.UserID = <USER>; 
connectionInfo.Password = <PWORD>; 

foreach (Table crTable in crTables) 
     { 
      crTableLogOnInfo = crTable.LogOnInfo; 
      crTableLogOnInfo.ConnectionInfo = connectionInfo; 
      crTable.ApplyLogOnInfo(crTableLogOnInfo); 

      // if you wish to change the schema name as well, you will need to set Location property as follows: 
      //crTable.Location = "<SCHEMA>." + crTable.Name; 

     } 

मैं crTable.Location स्थापित करने के लिए कोशिश की है, लेकिन कार्यक्रम को अवरोधित करता है। तो सुनिश्चित नहीं है कि क्या करना है।

+0

9 42 त्रुटि के लिए संदेश क्या है? –

+0

दृश्य/तालिकाओं को नहीं मिला। ऐसा इसलिए है क्योंकि स्कीमा गिराया जा रहा है, इसलिए यह नहीं जानता कि टेबल कहां ढूंढें। – madkow

उत्तर

1

अतीत में हम सफलतापूर्वक ऐसा करने से कनेक्शन पैरामीटर बदल दिया है:

CrystalDecisions.Shared.TableLogOnInfo info = document.Database.Tables[iTable].LogOnInfo.Clone() as CrystalDecisions.Shared.TableLogOnInfo; 

info.ConnectionInfo.ServerName = <SERVER>; 
info.ConnectionInfo.DatabaseName = ""; 
info.ConnectionInfo.UserID = <USER>; 
info.ConnectionInfo.Password = <PASSWORD>; 

document.Database.Tables[iTable].ApplyLogOnInfo(info); 

जहां documentCrystalDecisions.CrystalReports.Engine.ReportDocument है।

+0

धन्यवाद! लेकिन मुझे लगता है कि हमें काम करने लगता है कि एक अलग तरीका मिला। निचे देखो – madkow

1

ऐसा करके यह निश्चित:

connectionInfo.DatabaseName = ""; 
connectionInfo.ServerName = <SERVER>; 
connectionInfo.UserID = <USER>; 
connectionInfo.Password = <PWORD>; 

foreach (Table crTable in crTables) 
    { 
     crTableLogOnInfo = crTable.LogOnInfo; 
     crTableLogOnInfo.ConnectionInfo = connectionInfo; 
     crTable.ApplyLogOnInfo(crTableLogOnInfo); 

     // if you wish to change the schema name as well, you will need to set Location property as follows: 
     //crTable.Location = "<SCHEMA>." + crTable.Name; 
     crTable.Location = "<SCHEMA>." + crTable.LogOnInfo.TableName; 

    } 

मैं गलत तरीके से स्थान की स्थापना की गई थी। आपकी सहायताके लिए धन्यवाद!