Второй день долблюсь – пытаюсь настроить связку с MSSQL, и не удается.
Использую MS SQL 2008 R2 standard.
Гидра 4.1.4
Базу создал скриптом trading.sql (взял с stocksharp.codeplex.com, dev/Documentation)
Скрипт отработал нормально. База создалась, проблем не было.
Добиться того, чтобы Гидра хоть как-то цеплялась к базе мне удалось только в такой конфигурации (из файла Hydra.exe.config):
……………..
……………..
----------------------------------------------
Остальные конфигурации не трогал
При запуске гидра валится на этом коде:
private void InitializeDataSource()
{
_storageRegistry = new StorageRegistry();
ConfigManager.RegisterService(_storageRegistry);
……………..
if (_entityRegistry.Exchanges.Count < 4)
{
_entityRegistry.Exchanges.Save(Exchange.Test); <= Здесь валимся
_entityRegistry.Exchanges.Save(Exchange.Micex);
_entityRegistry.Exchanges.Save(Exchange.Rts);
_entityRegistry.Exchanges.Save(Exchange.Ux);
}
Поначалу эксепшен говори о том, что нет прав для INSERT операции. Проверил – действительно, скрипт создавал пользователя trading без прав. Тал пользователю trading все права на базу Trading. Но это помогло не сильно. После этого эксепшен стал другой:
2012-10-01 00:03:55.073|Error |StockSharp|System.Data.SqlClient.SqlException (0x80131904): Invalid column name 'TimeZoneInfo'.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at Ecng.Data.DatabaseCommand.b__6(DbCommand cmd)
at Ecng.Data.DatabaseCommand.<>c__DisplayClass41.<Execute>b__1(DbConnection connection) at Ecng.Data.Database.GetConnection(Action1 action)
at Ecng.Data.DatabaseCommand.Execute[TResult](IEnumerable1 input, Func2 handler)
at Ecng.Data.DatabaseCommand.ExecuteNonQuery(SerializationItemCollection input)
at Ecng.Data.Database.Execute(DatabaseCommand command, SerializationItemCollection source, Boolean needRetVal)
at Ecng.Data.Database.Create(DatabaseCommand command, SerializationItemCollection input, Boolean needRetVal)
at Ecng.Data.Database.<>c__DisplayClassc1.<Create>b__b() at Ecng.Data.Database.Create[TEntity](TEntity entity) at Ecng.Data.Database.Ecng.Serialization.IStorage.Add[TEntity](TEntity entity) at Ecng.Serialization.RelationManyList1.OnAdd(TEntity entity)
at Ecng.Data.HierarchicalPageLoadList1.OnAdd(TEntity entity) at Ecng.Serialization.RelationManyList1.Add(TEntity item)
at StockSharp.Algo.Storages.BaseStorageEntityList1.Save(T entity) at StockSharp.Hydra.MainWindow.InitializeDataSource() in D:\Work\StockSharp\StockSharp_4.1.4_Sources.Up\Hydra\Hydra\MainWindow.xaml.cs:line 160 at StockSharp.Hydra.MainWindow.<MainWindowLoaded>b__21() in D:\Work\StockSharp\StockSharp_4.1.4_Sources.Up\Hydra\Hydra\MainWindow.xaml.cs:line 483 at System.Threading.Tasks.Task1.InvokeFuture(Object futureAsObj)
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.Tasks.Task.Execute()
Пытался добавить колонку TimeZoneInfo в таблицу Exchange. Вроде проходило, но потом опять где-то что-то ломалось.
В общем, что-то делаю не так.
Подскажите, люди добрые, как же подцепится-то к MSSQL базе.