Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 |

 

  Вопрос: Базы Данных VB2008/Express Добавлено: 04.07.08 01:23  

Автор вопроса:  BG(Алексей)
С базами данных никогда не имел дела. А тут начитался Ваших тем и решил поробовать.
Создал приложение, подключил БД(Northwind) и торжествовал до тех пор пока не понял, что запрос(SELECT) не могу выполнить.

Собственно вопрос. Может кто сталкивался.
Если ложу на форму датасет, все работает великолепно.
Но если пытаюсь подключиться к БД с помощью кода, то выскакивает ошибка.

В связи с этим перекопал(на мой взгляд) пол интернета, потратил на это целый день, а результат отрицательный.

        Dim sConn As String = "Server=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=SSPI"
        Dim conn As SqlConnection = New SqlConnection(sConn)
        conn.Open()


В чем может быть проблема?

Ответить

  Ответы Всего ответов: 20  

Номер ответа: 1
Автор ответа:
 __Pavel__



Вопросов: 29
Ответов: 284
 Web-сайт: ммм.сайта.НЕТ
 Профиль | | #1
Добавлено: 04.07.08 10:24
кажется когда я читал книгу там при подключении нужно писать не "Integrated Security=SSPI", а "Integrated Security=True"... попробуйте, может поможет...

Ответить

Номер ответа: 2
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #2 Добавлено: 04.07.08 16:58
Нет.
Не работает.

Ответить

Номер ответа: 3
Автор ответа:
 __Pavel__



Вопросов: 29
Ответов: 284
 Web-сайт: ммм.сайта.НЕТ
 Профиль | | #3
Добавлено: 04.07.08 20:45
а так? "Server=.\SQLServer;Initial Catalog=Northwind;Integrated Security=True"
да и вобще есть такая "хитрость"... вобщем подключите базу через студию... там в окошке подключения БД нажмете на кнопку "+" и внизу покажется строка подключения! я оттуда брал строку подключения для Access =)

Ответить

Номер ответа: 4
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #4 Добавлено: 05.07.08 02:40
1) Правильно подключаться так:

        Dim sConn As String = "Server=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=SSPI"
        Using conn As SqlConnection = New SqlConnection(sConn)
            conn.Open()
        End Using

Это будет гарантировать что после работы соединение будет освобождено.

2) Телепаты в отпуске, в чем именно проблема? Строка подключения выглядит нормально.

При вызове .Open какое исключение происходит (если происхиодит)?
Может заблокированы протоколы, нужно посмотреть.

Но для начала как я сказал - что за исключение

Ответить

Номер ответа: 5
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #5 Добавлено: 05.07.08 06:35
SQLExeption Was Unhandled

Cannot open database "Northwind" requested by the login. The login failed. Login failed for user 'UA\EX'.

Это при существующей строке("Server=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=SSPI";)

Ответить

Номер ответа: 6
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #6 Добавлено: 05.07.08 18:43
1) Проверить наличие базы данных Northwind в SQL Server.
Заходишь в SSMS, подключаешься к серверу, разворачиваешь список Databases и смотришь.


2) Проверить статус базы данных Northwind (если база данных переведа в режим Offline, ошибка будет точно такая же.
Заходишь в SSMS, ищешь свою базу, если возле нее значок с красной стрелочкой вниз и в скобках после названия базы написано Offline - значит база данных в режиме Offline.
Жмешь по ней правой кнопкой - Tasks - Bring Online
или
ALTER DATABASE [Nortwind] SET  ONLINE


3) Проверить статус пользователя UA\EX
В SSMS разворачиваешь ветвь Security - Logins и ищешь там этого пользователя. Если его нет - нужно добавить. Если есть - зайти в свойства и посмотреть Status (должно быть отмечено Grant и Enabled).
Чтоб добавить пользователя, жмешь правой кнопкой по Logins - New Login, отмечаешь опцию Windows Authentication, через "Search..." ищешь нужный логин, дальше думаю разберешься.

4) У пользователя UA\EX нет прав на доступ к базе данных. Нужно проверить или роль пользователя (например если дать sysadmin то он сможет ко всем базам доступ иметь, но это, разумеется, небезопасно, лучше на вкладке User Mapping дать доступ db_owner к нужной базе данных, а еще лучше более точно настроить права через Permissions.

Если это компьютер разработки, на первых порах достаточно дать пользователю sysadmin и не морочиться.

Ответить

Номер ответа: 7
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #7 Добавлено: 05.07.08 19:34
UA-компьютер
ЕХ-единственный юзер, он же администратор

Спасибо. Пошел разбираться.

Ответить

Номер ответа: 8
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #8 Добавлено: 06.07.08 01:36
Вообщем, ситуация такая.
Загрузил SSMS.
Northwind, естественно там не оказалось.
Попробовал добавить. Вышла ошибка-"... Northwind is not a primary database." У меня Northwind хранится в Microsoft SQL Server Compact Edition с расширением ".sdf".
Я думаю, что это из-за того, что Express версия.
Я тут же создал новую БД и попробовал подключиться.
Всё отлично. Никаких проблем не возникло.

Steel Brand спасибо.

Будут ли какие-нибудь рекомендации по этому поводу?
Может ли кто нибудь посоветовать нормальную книгу по изучению и програмированию БД?
Если БД находится в приложении, подключение к ней будет выглядет так же?

Ответить

Номер ответа: 9
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #9 Добавлено: 06.07.08 01:59
Ну проблема у тебя возникла из-за того что у SQL Server Compact Edition и SQL Server Express 2005 разные форматы файлов данных, и даже разные расширения (у SQL Server Express и SQL Server - .sdf и .ldf)

С SQL Server 2005 идет новая база данных-пример - Adwenture Works
Если у тебя ее нету, скачать можно здесь:
http://codeplex.com/SqlServerSamples#databases
Тебе нужны Sample Databases

Есть база даных Northwind, но под SQL Server 2000
http://www.microsoft.com/downloads/details.aspx?FamilyID=06616212-0356-46a0-8da2-eebc53a68034&;DisplayLang=en
Формат данных совместим с SQL Server 2005, т.е. если у тебя получится извлечь базу из msi, то файл данных можно будет подключить в SQL Server.

Может ли кто нибудь посоветовать нормальную книгу по изучению и програмированию БД?

Честно говоря не знаю что посоветовать, нужно вобщем изучать архитектуру реляционных СУБД, я до всего доходил на собственном опыте...
А так - читаю только SQL Server Books Online (документация по SQL Server)

Если БД находится в приложении, подключение к ней будет выглядет так же?

Что значит "БД находится в приложении"?

Если хочешь использовать SQL Server Compact Edition, то там все по-другому, другие классы нужно использовать для подключения, и там, насколько я помню, строка подключения не нужна, только путь к базе данных указываешь.

Если SQL Server Express, и сам файл .mdf лежит в папке с твоим приложением, то строка подключения будет выглядеть примерно так:
data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=MyFile.mdf;User Instance=true

Ответить

Номер ответа: 10
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #10 Добавлено: 06.07.08 02:01
Ну проблема у тебя возникла из-за того что у SQL Server Compact Edition и SQL Server Express 2005 разные форматы файлов данных, и даже разные расширения (у SQL Server Express и SQL Server - .sdf и .ldf)

Виноват.
.sdf - файл данных SQL Server CE

.mdf - файла данных SQL Server/SQL Server Express
.ldf - файла журнала транзкций SQL Server/SQL Server Express

Ответить

Номер ответа: 11
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #11 Добавлено: 06.07.08 03:01
Наверно последний вопрос.
Какая разница между "SQL Server CE" и "SQL Server/SQL Server Express". Что и где лучше применять? Или для каких целей один и другой.

Ответить

Номер ответа: 12
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #12 Добавлено: 06.07.08 06:33
SQL Server CE - это клиентская СУБД.
Основные сценарии - использование на мобильных устрйоствах и десктопных приложениях, в которых нет необходимости в серверной СУБД типа "настоящего" SQL Server.

SQL Server CE работает на настольных и на мобильных Windwos.
Размер самой СУБД около 1.7 МБ.
Бесплатная, согласно лицензии, насколько я помню, можно свободно распространять со своим приложением.
Плюс, если не ошибаюсь, может работать даже без установки самого компонента - просто достаточно носить с приложением одну сборку, но по документации такой вариант не рекомендовался.

По сравнению с SQL Server, SQL Server CE, разумеется, серьезно урезан в функциональности.
Из основных отличий - нет поддержки хранимых процедур и полнотекстового поиска, затруднены сценарии совместного использования базы данных.
Ограничение на размер базы данных - 2 или 4 ГБ.
Кстати, с SQL Server CE идет какой-то механизм синхронизации с SQL Server

Работа с SQL Server CE подобна работе с SQL Server.
Управление базонй данных вполняется через SQL Server Management Studio (раньше нужно было установить специальный компонент чтоб SSMS могла работать с базами "компактного" сервера, сейчас, видимо, этот компонент уже встроен, по крайней мере в SSMS 2008 я вижу кнопку для подключения к базе SQL Server CE).
Для работы с SQL Server CE нужно подключить сборку которая идет в комплекте, далее используются классы аналогичные SqlCommand, SqlDataReader, но специфичные для SQL Server CE.
В Visual Studi 2008 уже есть поддержка SQL Server CE, добавить такую базу в приложение можно прямо через Add New Item (она называется Local Database), и управлять прямо из Visual Studio.

Огорчает что нет поддержки со стороны LinQ 2 SQL, хотя вроде бы обещали сделать.

Я этот продукт использовал, и довольно успешно.

SQL Server 2000/2005/2008 (выходит во втором полугодии этого года) - это серьезный тяжелый серверный пакет, в состав которого входят сама СУБД и дополнительные компоненты, инструменты.

Основные компоненты:
Собственно СУБД
Компоненты Business Intelligence:
* Integration Services
* Reporting Services
* Analisys Services

Инструменты:
SQL Server Management Studio
SQL Profiler

Есть и другие, но это наиболее часто используемые, остальные можно посмотреть в Books Online.

MSDE, SQL Server Express 2005/2008 - это урезаные версии SQL Server 2000/2005/2008 соответственно.
Основной сценарий - использование в серверных продуктах в которых нет высоких требований к СУБД, в десктопных приложениях.
Эти продукты бесплатны.

В состав SQL Server Express входит только сама СУБД с ограничениями на размер базы данных (2 или 4 гигабайта), изначально без поддержки полнотекстового поиска, но позже полнотекстовый поиск все-таки добавили, изначально никаких дополнительных компонентов с SQL Server Express не шло, но позже добавили Reporting Services и SQL Server Management Studio Express.

Файлы данных SQL Server и SQL Server Express совместимы.



Если речь идет о мобильном приложении или о небольшом десктопном приложении, лучше всего использовать SQL Server CE, так как он самый "легкий", прост в развертывании.

Более сложные десктопные приложения и простые серверные приложения можно запускать на SQL Server Express Edition - в нем присутствуют все функции, необходимые для полноценной работы. Разумеется, этот вариант подходит если вписываетесь в ограничение на размер базы данных.
Еще один плюс этого варианта - при необходимости очень легко перейти на SQL Server - достаточно перенести файл данных под управление другой СУБД.



Ну, и если речь идет о серьезном серверном продукте, то выбираем флагман SQL Server, почему, думаю, объяснять не надо :)

Ответить

Номер ответа: 13
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #13 Добавлено: 06.07.08 07:43
Спасибо за столь содержательные ответы.
Общий смысл уловил.
Огорчает что нет поддержки со стороны LinQ 2 SQL, хотя вроде бы обещали сделать.

Уже есть.

Ответить

Номер ответа: 14
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #14 Добавлено: 06.07.08 18:15
Огорчает что нет поддержки со стороны LinQ 2 SQL, хотя вроде бы обещали сделать.



Уже есть.

Откуда такая информация?
Я проверил на RTM-сборке Visual Studio 2008:

---------------------------
Microsoft Visual Studio
---------------------------
The selected object(s) use an unsupported data provider.
---------------------------
OK   Help  
---------------------------

Ответить

Номер ответа: 15
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #15 Добавлено: 06.07.08 18:58

Огорчает что нет поддержки со стороны LinQ 2 SQL

Не уверен в правильности понимания, но где то прочитал, когда искал почему не могу подключиться.
Если встретится снова, напишу.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам