MSSQL 2005 Hakkinda bir takim sorular..

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

MSSQL 2005 Hakkinda bir takim sorular..

Mesaj gönderen Glen »

Merhaba,

Yaklasik 2 - 2,5 senedir MSSQL 2000 ile calisan bir uygulama gelistiriyorum ve projemi 2005'e gecirmeyi dusunuyorum.

Bildiginiz uzere bir sonraki versionlar hep geriye uyumlu calismaktadir, ancak yine de ben sormak istiyorum..

1. 2005 kurduktan sonra, 2000 veritabani dosyami (MDF) 2005'e direk attach yapabiliyorum ve aynen 2000 de kullandigim gibi calistirabiliyorum dogru mu ? (Sorunun cevabi %99 evet olmasina ragmen yine de sormam gerekiyor.

2. 2005de Row level triggering ozelligi eklendimi? Yoksa hala state level olarak mi devam etmekte? Ek olarak Before triggeri eklendimi?

3. Piyasadaki firmalar genellikle hangi sql versionunu kullaniyor. 2005'e tasidigimda projemi, 2000 de gelistiriyormus gibi yeni ozellikleri kullanmazsam, 2000 serverli firmalar programimi calistirabilirmi? Daha dogrusu veritabanimi sorunsuz kullanabilirler mi?

Ilginiz icin simdiden cok tesekkur ederim, herkese iyi calismalar.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
2.soru için after yerineinstead on (yanlış yazmadıysam) dediğin zaman before tetikleyicisi oluyor.
ve bildiğim kadarı ile state level.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Çok yerinde sorular. Ben sistem tablolarını pek bi kullandığımdan SQLExpress kullanamamıştım. Belki bir eksiğim vardır, konuya tam hakim arkadaşlardan gelen cevaplar benim de çok işime yarayacak.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Merhaba, her iki arkadasima cevap verdigi icin tesekkur ediyorum.

Aslangeri arkadasim, Instead of triggeri bildigin gibi 2000 de de mevcuttur. Ancak Instead of triggeri, before triggeri degil, adindan anlasildigi gibi yapilan bir islemi (INSERT, UPDATE DELETE) iptal edip yerine kendi tanimladigi bir islemi yapan triggerdir. Bu da yanlis kullanildiginda maalesef bazen yanlis sonuclara sebep oluyor.

Ilginiz icin tekrardan tesekkur ederim, ben de konuya hakim olan arkadaslardan cevaplari sabirsizlikla bekliyorum ;)

Kolay gelsin.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

Glen yazdı: Aslangeri arkadasim, Instead of triggeri bildigin gibi 2000 de de mevcuttur.
sql 2000 i bildiğimide nerden çıkardın. :lol:
sql2005 i kullanmaya başlayalı 3 ay oldu. instead of u before triger olarak kullanıyorum (dum). Yeni bişeyler daha öğrenmiş olduk. Teşekkürler...
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

aslangeri yazdı:
Glen yazdı: Aslangeri arkadasim, Instead of triggeri bildigin gibi 2000 de de mevcuttur.
sql 2000 i bildiğimide nerden çıkardın. :lol:
sql2005 i kullanmaya başlayalı 3 ay oldu. instead of u before triger olarak kullanıyorum (dum). Yeni bişeyler daha öğrenmiş olduk. Teşekkürler...
Bilmedigini biliyordum, nezaketen demistim :) Neyse konudan uzaklasmayalim :)
Kolay gelsin.
Kullanıcı avatarı
hbahadir
Kıdemli Üye
Mesajlar: 544
Kayıt: 06 Ara 2004 05:03
Konum: BURSA idi artık İST.
İletişim:

Mesaj gönderen hbahadir »

http://download.microsoft.com/download/ ... _Guide.pdf

http://www.microsoft.com/sql/prodinfo/o ... r2005.mspx

1. evet attach yapabiliyosun, ama dikkat etmen gereken (bildiğim kadarı ile yanlışım varsa düzeltin ltf) o database ' de 2000 uyumlu oluyor, yani yeni özellikleri kullanamıyorsun.

2. Yine bildiğim kadarı ile state level olarak devam ediyor, before trigeri hala yok.

3. Ben öyle yapıyorum sqlclni ile 2000 database'ine de erişebiliyosun zaten.

Ek olarak 2005'in performansı 2000 ' e göre oldukça iyi.
Syntax


Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)
CREATE TRIGGER [ schema_name . ]trigger_name
ON { table | view }
[ WITH <dml_trigger_option> [ ,...n ] ]
{ FOR | AFTER | INSTEAD OF }
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier [ ; ] > }

<dml_trigger_option> ::=
[ ENCRYPTION ]
[ EXECUTE AS Clause ]

<method_specifier> ::=
assembly_name.class_name.method_name

Trigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE, or UPDATE STATISTICS statement (DDL Trigger)
CREATE TRIGGER trigger_name
ON { ALL SERVER | DATABASE }
[ WITH <ddl_trigger_option> [ ,...n ] ]
{ FOR | AFTER } { event_type | event_group } [ ,...n ]
AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME < method specifier > [ ; ] }

<ddl_trigger_option> ::=
[ ENCRYPTION ]
[ EXECUTE AS Clause ]

<method_specifier> ::=
assembly_name.class_name.method_name

Trigger on a LOGON event (Logon Trigger)
CREATE TRIGGER trigger_name
ON ALL SERVER
[ WITH <logon_trigger_option> [ ,...n ] ]
{ FOR | AFTER } LOGON
AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier> [ ; ] }
<logon_trigger_option> ::=
[ ENCRYPTION ]
[ EXECUTE AS Clause ]

<method_specifier> ::=
assembly_name.class_name.method_name

Arguments

schema_name
Is the name of the schema to which a DML trigger belongs. DML triggers are scoped to the schema of the table or view on which they are created. schema_name cannot be specified for DDL or logon triggers.

trigger_name
Is the name of the trigger. A trigger_name must comply with the rules for identifiers, with the exception that trigger_name cannot start with # or ##.

table | view
Is the table or view on which the DML trigger is executed and is sometimes referred to as the trigger table or trigger view. Specifying the fully qualified name of the table or view is optional. A view can be referenced only by an INSTEAD OF trigger. DML triggers cannot be defined on local or global temporary tables.

DATABASE
Applies the scope of a DDL trigger to the current database. If specified, the trigger fires whenever event_type or event_group occurs in the current database.

ALL SERVER
Applies the scope of a DDL or logon trigger to the current server. If specified, the trigger fires whenever event_type or event_group occurs anywhere in the current server.

WITH ENCRYPTION
Obfuscates the text of the CREATE TRIGGER statement. Using WITH ENCRYPTION prevents the trigger from being published as part of SQL Server replication. WITH ENCRYPTION cannot be specified for CLR triggers.

EXECUTE AS
Specifies the security context under which the trigger is executed. Enables you to control which user account the instance of SQL Server uses to validate permissions on any database objects that are referenced by the trigger.

For more information, seeEXECUTE AS Clause (Transact-SQL).

FOR | AFTER
AFTER specifies that the trigger is fired only when all operations specified in the triggering SQL statement have executed successfully. All referential cascade actions and constraint checks also must succeed before this trigger fires.

AFTER is the default when FOR is the only keyword specified.

AFTER triggers cannot be defined on views.

INSTEAD OF
Specifies that the DML trigger is executed instead of the triggering SQL statement, therefore, overriding the actions of the triggering statements. INSTEAD OF cannot be specified for DDL or logon triggers.

At most, one INSTEAD OF trigger per INSERT, UPDATE, or DELETE statement can be defined on a table or view. However, you can define views on views where each view has its own INSTEAD OF trigger.

INSTEAD OF triggers are not allowed on updatable views that use WITH CHECK OPTION. SQL Server raises an error when an INSTEAD OF trigger is added to an updatable view WITH CHECK OPTION specified. The user must remove that option by using ALTER VIEW before defining the INSTEAD OF trigger.

{ [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE ] }
Specifies the data modification statements that activate the DML trigger when it is tried against this table or view. At least one option must be specified. Any combination of these options in any order is allowed in the trigger definition.

For INSTEAD OF triggers, the DELETE option is not allowed on tables that have a referential relationship specifying a cascade action ON DELETE. Similarly, the UPDATE option is not allowed on tables that have a referential relationship specifying a cascade action ON UPDATE.

event_type
Is the name of a Transact-SQL language event that, after execution, causes a DDL trigger to fire. Events that are valid for use in DDL triggers are listed in DDL Events for Use with DDL Triggers.

event_group
Is the name of a predefined grouping of Transact-SQL language events. The DDL trigger fires after execution of any Transact-SQL language event that belongs to event_group. Event groups that are valid for use in DDL triggers are listed in Event Groups for Use with DDL Triggers.

After the CREATE TRIGGER has finished running, event_group also acts as a macro by adding the event types it covers to the sys.trigger_events catalog view.

WITH APPEND
Specifies that an additional trigger of an existing type should be added. Use of this optional clause is required only when the compatibility level is 65 or lower. If the compatibility level is 70 or higher, the WITH APPEND clause is not required to add an additional trigger of an existing type. This is the default behavior of CREATE TRIGGER with the compatibility level setting of 70 or higher. For more information, see sp_dbcmptlevel (Transact-SQL).

WITH APPEND cannot be used with INSTEAD OF triggers or if AFTER trigger is explicitly stated. WITH APPEND can be used only when FOR is specified, without INSTEAD OF or AFTER, for backward compatibility reasons. WITH APPEND cannot be specified if EXTERNAL NAME is specified (that is, if the trigger is a CLR trigger).
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Arkadasim verdigin cevap icin ve herseyden otesi ilgilendigin icin cok tesekkur ederim. Aklimdaki bir cok soru isaretine cevap getirmis oldun.

Ancak 3. cevabini pek anlayamadim.

sqlclni dedigin tam olarak nedir? Google'da arattim ancak pek tatmin edici sonuclar bulamadim o yuzden sormak istedim..

Tekrardan tesekkur ederim. Iyi calismalar
Kullanıcı avatarı
iason
Üye
Mesajlar: 38
Kayıt: 18 Kas 2003 02:01
Konum: İstanbul
İletişim:

Mesaj gönderen iason »

2000 deki veritabanını 2005e attach ettiğinde veritabanı 2000 uyumlu olarak çalışır. Bu durumda 2005 özelliklerini kullanamazsın. Veritabanı özelliklerinden Options->Compatibility Level özelliğini 2005 e çekerek veritabanında 2005 özelliklerini kullanmaya başlayabilirsin. Ancak bu özellikleri kullanmaya başladığında veritabanını 2000 e tekrar çekemezsin.
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

iason yazdı:2000 deki veritabanını 2005e attach ettiğinde veritabanı 2000 uyumlu olarak çalışır. Bu durumda 2005 özelliklerini kullanamazsın. Veritabanı özelliklerinden Options->Compatibility Level özelliğini 2005 e çekerek veritabanında 2005 özelliklerini kullanmaya başlayabilirsin. Ancak bu özellikleri kullanmaya başladığında veritabanını 2000 e tekrar çekemezsin.
Verdigin cevap icin cok tesekkur ederim arkadasim. Sorumun ozeti buydu sanirim :) Tekrardan herkese ilgisi icin tesekkur ederim,

Iyi calismalar, kolay gelsin.
Kullanıcı avatarı
hbahadir
Kıdemli Üye
Mesajlar: 544
Kayıt: 06 Ara 2004 05:03
Konum: BURSA idi artık İST.
İletişim:

Mesaj gönderen hbahadir »

sqlclni 2005 ' in odbc provider'ı.
yakupk
Üye
Mesajlar: 59
Kayıt: 04 Haz 2004 11:22
Konum: Balıkesir
İletişim:

MErhaba,

Mesaj gönderen yakupk »

arkadaşlar mdf dosyalarını hangi programla oluşturuyorsunuz? bunun için kullanılan tool veya uygulama varmı? birde oluşturduğumuz tabloyu nasıl sqlexpress'e bağlayacağız teşekkürler iyi çalışmalar?
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Ücretsiz paketler içinden SQL Manager 2005 programı bu iş için biçilmiş kaftan olabilir.

http://sqlmanager.net/products/mssql/manager/
veya
http://www.sqlmanager.net/
bağlantılarını incele.

Oluşan DB otomatik olarak SQL'e kayıtlıdır fakat taşınan dosya için sp_attach_db komutunu kullanman gerekiyor.

sp_attach_db 'DB_ADI' , 'c:\DB.MDF' , 'c:\DB_LOG.LDF'

gibi.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
yakupk
Üye
Mesajlar: 59
Kayıt: 04 Haz 2004 11:22
Konum: Balıkesir
İletişim:

Mesaj gönderen yakupk »

afedersiniz bu ücretli diyor ama,
birde oluşturdugumuz dosyayı sqlexpress'e nasıl bağlayacaz bu tool yapıyormu? ücretsiz olduğuna eminmiyiz?
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Program ücretli olan ekstra özellikleri var fakat muhtemelen ihtiyacın olmayacak kadar ileri özellik bunlar. Bu paketin ücretsiz hali tüm ihtiyaçlarımı karşılar durumda. SQLExpress'e bağlamaktan kasıt dosyayı veritabanına kayıt etmek ise oluşturulan veritabanı zaten sql'e bağlıdır (kayıtlıdır) . Başka bilgisayara taşınan dosyaları kayıt etmeyi soruyorsan sp_attach_db'ye göz atman gerekiyor. Tabi sisteminde SQLExpress'ten başka SQL Server yüklü ve veri tabanı burada kayıtlı ise aynı anda SQLExpress'e kayıt edemezsin. Önce kayıtlı olduğu SQL'den ap_detach_db ile çıkartman gerekiyor.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla