|
04.11.2008, 10:01 | #1 |
Чайный пьяница
|
Цитата:
Сообщение от ZooY
CRM 4.0
В плагине нужно получить данные, но не с помощью CrmService, а с помощью обращения к базе SQL. Для подключения к базе нужно как минимум знать ее имя. По началу сделал так: Код: ... string databaseName = сontext.OrganizationName + "_MSCRM"; string connectionString = "Data Source=localhost;Initial Catalog=" + databaseName + ";Integrated Security=SSPI"; ... Собственно вопрос: можно ли каким нибудь образом получить имя базы данных CRM? Будь вместо плагина обычная ASP.NET страничка, я бы не парился и вбил имя базы в web.config, а вот что делать с плагином - ума не приложу... Код: RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\MSCRM"); //Retreive MSCRM DataBase connection string string configDBConnectionString = key.GetValue("configdb").ToString(); //next part - i connect to config db and retreive data to config connection to client db DataSet clientDBConnectionData = new DataSet(); using(SqlConnection connection = new SqlConnection(configDBConnectionString)) { connection.Open(); using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = connection; cmd.CommandType = CommandType.Text; cmd.CommandText = string.Format("Select SqlServerName, DatabaseName From Organization Where UniqueName = '{0}'", crmOrganizationName); using (SqlDataAdapter adapter = new SqlDataAdapter(cmd)) adapter.Fill(clientDBConnectionData); } connection.Close(); } if (clientDBConnectionData.Tables.Count == 0 || clientDBConnectionData.Tables[0].Rows.Count == 0) throw new Exception("Check your config parameters!"); string connectionString = string.Format("Data Source={0};Initial Catalog={1};Integrated Security=SSPI", new object[] { (string)clientDBConnectionData.Tables[0].Rows[0]["SqlServerName"], (string)clientDBConnectionData.Tables[0].Rows[0]["DatabaseName"]}); PS харкодинг localhost-a - не хороший стиль, потому что Application Server и DB Server - могут быть разнесены. Последний раз редактировалось a33ik; 04.11.2008 в 10:10. |
|
|
|