Class: ActiveRecord::ConnectionAdapters::SQLServerAdapter
Overview
Constant Summary
collapse
- ADAPTER_NAME =
'SQLServer'.freeze
- VERSION =
'3.0.3'.freeze
- DATABASE_VERSION_REGEXP =
/Microsoft SQL Server\s+(\d{4})/
- SUPPORTED_VERSIONS =
[2005,2008].freeze
ActiveRecord::ConnectionAdapters::Sqlserver::Errors::LOST_CONNECTION_EXCEPTIONS, ActiveRecord::ConnectionAdapters::Sqlserver::Errors::LOST_CONNECTION_MESSAGES
Instance Attribute Summary collapse
Instance Method Summary
collapse
#lost_connection_exceptions, #lost_connection_messages
#select_one
#column_name_length, #columns_per_multicolumn_index, #columns_per_table, #in_clause_length, #index_name_length, #indexes_per_table, #joins_per_query, #sql_query_length, #table_alias_length, #table_name_length
#add_column, #change_column, #change_column_default, #change_column_null, #columns, #create_table, #drop_table, #indexes, #native_database_types, #remove_column, #remove_index!, #rename_column, #rename_table, #table_exists?, #tables, #type_to_sql, #views
#add_limit_offset!, #begin_db_transaction, #case_sensitive_equality_operator, #charset, #commit_db_transaction, #create_database, #create_savepoint, #current_database, #drop_database, #empty_insert_statement_value, #execute, #execute_procedure, #limited_update_conditions, #newid_function, #newsequentialid_function, #outside_transaction?, #recreate_database, #recreate_database!, #release_savepoint, #rollback_db_transaction, #rollback_to_savepoint, #run_with_isolation_level, #select_one, #select_rows, #use_database, #user_options
#quote, #quote_column_name, #quote_string, #quote_table_name, #quote_value_as_utf8?, #quoted_date, #quoted_false, #quoted_true, #quoted_utf8_value
Constructor Details
Returns a new instance of SQLServerAdapter.
198
199
200
201
202
203
204
205
206
207
208
209
210
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 198
def initialize(logger,config)
@connection_options = config
connect
super(@connection, logger)
@database_version = info_schema_query { select_value('SELECT @@version') }
@database_year = DATABASE_VERSION_REGEXP.match(@database_version)[1].to_i rescue 0
initialize_native_database_types
initialize_sqlserver_caches
use_database
unless SUPPORTED_VERSIONS.include?(@database_year)
raise NotImplementedError, "Currently, only #{SUPPORTED_VERSIONS.to_sentence} are supported."
end
end
|
Instance Attribute Details
#connection_supports_native_types ⇒ Object
Returns the value of attribute connection_supports_native_types.
191
192
193
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 191
def connection_supports_native_types
@connection_supports_native_types
end
|
#database_version ⇒ Object
Returns the value of attribute database_version.
191
192
193
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 191
def database_version
@database_version
end
|
#database_year ⇒ Object
Returns the value of attribute database_year.
191
192
193
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 191
def database_year
@database_year
end
|
Instance Method Details
#active? ⇒ Boolean
Abstract Adapter (Connection Management) ================== #
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 247
def active?
connected = case @connection_options[:mode]
when :dblib
!@connection.closed?
when :odbc
true
else :adonet
true
end
return false if !connected
raw_connection_do("SELECT 1")
true
rescue *lost_connection_exceptions
false
end
|
#adapter_name ⇒ Object
Abstract Adapter ========================================== #
214
215
216
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 214
def adapter_name
ADAPTER_NAME
end
|
#auto_connect ⇒ Object
317
318
319
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 317
def auto_connect
@@auto_connect.is_a?(FalseClass) ? false : true
end
|
#cs_equality_operator ⇒ Object
341
342
343
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 341
def cs_equality_operator
@@cs_equality_operator || 'COLLATE Latin1_General_CS_AS_WS ='
end
|
#disable_referential_integrity ⇒ Object
238
239
240
241
242
243
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 238
def disable_referential_integrity
do_execute "EXEC sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'"
yield
ensure
do_execute "EXEC sp_MSforeachtable 'ALTER TABLE ? CHECK CONSTRAINT ALL'"
end
|
#disconnect! ⇒ Object
269
270
271
272
273
274
275
276
277
278
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 269
def disconnect!
case @connection_options[:mode]
when :dblib
@connection.close rescue nil
when :odbc
@connection.disconnect rescue nil
else :adonet
@connection.close rescue nil
end
end
|
#inspect ⇒ Object
313
314
315
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 313
def inspect
"#<#{self.class} version: #{version}, year: #{@database_year}, connection_options: #{@connection_options.inspect}>"
end
|
#native_binary_database_type ⇒ Object
337
338
339
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 337
def native_binary_database_type
@@native_binary_database_type || 'varbinary(max)'
end
|
#native_date_database_type ⇒ Object
333
334
335
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 333
def native_date_database_type
sqlserver_2008? ? 'date' : 'datetime'
end
|
#native_string_database_type ⇒ Object
321
322
323
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 321
def native_string_database_type
@@native_string_database_type || (enable_default_unicode_types ? 'nvarchar' : 'varchar')
end
|
#native_text_database_type ⇒ Object
325
326
327
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 325
def native_text_database_type
@@native_text_database_type || enable_default_unicode_types ? 'nvarchar(max)' : 'varchar(max)'
end
|
#native_time_database_type ⇒ Object
329
330
331
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 329
def native_time_database_type
sqlserver_2008? ? 'time' : 'datetime'
end
|
#pk_and_sequence_for(table_name) ⇒ Object
Abstract Adapter (Misc Support) =========================== #
286
287
288
289
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 286
def pk_and_sequence_for(table_name)
idcol = identity_column(table_name)
idcol ? [idcol.name,nil] : nil
end
|
#primary_key(table_name) ⇒ Object
291
292
293
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 291
def primary_key(table_name)
identity_column(table_name).try(:name)
end
|
#reconnect! ⇒ Object
263
264
265
266
267
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 263
def reconnect!
disconnect!
connect
active?
end
|
#reset! ⇒ Object
280
281
282
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 280
def reset!
remove_database_connections_and_rollback { }
end
|
#sqlserver? ⇒ Boolean
SQLServer Specific (DB Reflection) ======================== #
297
298
299
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 297
def sqlserver?
true
end
|
#sqlserver_2005? ⇒ Boolean
301
302
303
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 301
def sqlserver_2005?
@database_year == 2005
end
|
#sqlserver_2008? ⇒ Boolean
305
306
307
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 305
def sqlserver_2008?
@database_year == 2008
end
|
#supports_count_distinct? ⇒ Boolean
226
227
228
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 226
def supports_count_distinct?
true
end
|
#supports_ddl_transactions? ⇒ Boolean
230
231
232
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 230
def supports_ddl_transactions?
true
end
|
#supports_migrations? ⇒ Boolean
218
219
220
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 218
def supports_migrations?
true
end
|
#supports_primary_key? ⇒ Boolean
222
223
224
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 222
def supports_primary_key?
true
end
|
#supports_savepoints? ⇒ Boolean
234
235
236
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 234
def supports_savepoints?
true
end
|
#version ⇒ Object
309
310
311
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 309
def version
self.class::VERSION
end
|